[mythtv-users] Mythfrontend on Android-database access

Stephen Worthington stephen_agent at jsw.gen.nz
Mon May 16 17:43:27 UTC 2022


On Mon, 16 May 2022 12:20:05 -0500, you wrote:

>On 5/16/2022 9:41 AM, Donald Brett wrote:
>> On 5/16/2022 5:28 AM, Stephen Worthington wrote:
>>> On Mon, 16 May 2022 09:53:27 +0100, you wrote:
>>>
>>>> On 16/05/2022 03:14, Stephen Worthington wrote:
>>>>> On Sun, 15 May 2022 13:11:27 -0500, you wrote:
>>>>>
>>>>>> By the way, a couple more data points; the mysql root user does 
>>>>>> not have
>>>>>> a password.  Also, the mythfrontend password is still mythtv, not the
>>>>>> generated one (y2i1MpJ8).  When migrating the old database to the new
>>>>>> machine, it seems to use the stock 'mythtv' password, so I left it 
>>>>>> as-is
>>>>>> (changed config.xml password).  Any other suggestions?
>>>>>>
>>>>>> Don
>>>>> There is a big difference between
>>>>>
>>>>> sudo mysql
>>>>>
>>>>> and
>>>>>
>>>>> mysql -u root -p
>>>>>
>>>>> When mysql is run from root with no password, it has full permissions
>>>>> for everything possible.  When it is run as user root with "-u root",
>>>>> it only has permissions a specified in the grants for user "root".
>>>>>
>>>>> When you migrate a database (or restore an old one), only the
>>>>> mythconverg database tables are migrated or restored by
>>>>> mythconverg_restore.pl.  Users and their grants are stored in the
>>>>> "mysql" database tables, and are not touched, so you have to manually
>>>>> set them up again.  They must match what you have in your config.xml
>>>>> files in /etc/mythtv, /home/mythtv/.mythtv and /home/<frontend
>>>>> user>/.mythtv.  When I move a database, I normally copy the old
>>>>> config.xml files and re-create the old users and grants, but you can
>>>>> choose to use the new config.xml settings too.  But you still need to
>>>>> create the users and grants.
>>>>>
>>>> Can I ask why the old users and grants are not migrated along with 
>>>> the database? After all, these
>>>> are essential metadata and having to (research and) re-input those 
>>>> commands introduces possibilities
>>>> for mistakes and errors.
>>> My guess would be that it is way too difficult.  Access to the users
>>> and grants requires MySQL/MariaDB permissions on the "mysql" database.
>>> The mythconverg_backup.pl program would need to be run as root to do
>>> that, or as a MySQL/MariaDB user with the special permissions
>>> required.  And then which users need to be backed up and restored?
>>> There would need to be options to allow the usernames to be specified
>>> as there is no automated way of finding all the config.xml files you
>>> are using and getting the usernames from them.  They can be on
>>> different PCs and devices.  And the "create user" and "grant" commands
>>> have been changing, so support would be needed for different versions
>>> of MySQL and MariaDB doing things differently.  And in any case, there
>>> is no way to extract the passwords from MySQL/MariaDB - the design of
>>> the way they work explicitly prevents that.  So the passwords would
>>> also need to be found in the config.xml files.
>>>
>>> The names of the backup and restore programs (mythconverg_backup.pl
>>> and mythconverg_restore.pl) also strongly suggest that they are only
>>> going to work on the mythconverg database, not on data stored anywhere
>>> else.
>>> _______________________________________________
>>> mythtv-users mailing list
>>> mythtv-users at mythtv.org
>>> http://lists.mythtv.org/mailman/listinfo/mythtv-users
>>> http://wiki.mythtv.org/Mailing_List_etiquette
>>> MythTV Forums: https://forum.mythtv.org
>>
>> Hmm, I don't recall creating users or grants, so assumed it was done 
>> for me on another step of the install.  I used this to load the 
>> previous database:
>>
>> sudo /usr/share/mythtv/mythconverg_restore.pl --drop_database 
>> --create_database --filename 
>> /home/mythtv/db_backups/mythconverg-1350-20220501093643.sql.gz
>>
>> Then adjusted config.xml to use the default password.
>>
>> Anyway, I found a workaround for the mysql "identified by" issue here:
>>
>> https://stackoverflow.com/questions/5555328/error-1396-hy000-operation-create-user-failed-for-jacklocalhost 
>>
>>
>> And tried:
>>
>> mysql> drop user mythtv@'%';
>> mysql> flush privileges;
>> mysql> create user mythtv@'%' identified by 'mythtv';
>> mysql> flush privileges;
>> mysql> show grants for mythtv;
>>
>> +------------------------------------+
>> | Grants for mythtv@%                |
>> +------------------------------------+
>> | GRANT USAGE ON *.* TO `mythtv`@`%` |
>> +------------------------------------+
>> 1 row in set (0.00 sec)
>>
>> mysql> grant all privileges on mythconverg.* to 'mythtv'@'%';
>> mysql> show grants for mythtv;
>>
>> +---------------------------------------------------------+
>> | Grants for mythtv@%                                     |
>> +---------------------------------------------------------+
>> | GRANT USAGE ON *.* TO `mythtv`@`%`                      |
>> | GRANT ALL PRIVILEGES ON `mythconverg`.* TO `mythtv`@`%` |
>> +---------------------------------------------------------+
>> 2 rows in set (0.01 sec)
>>
>> The local fe/be still works and now the ubuntu 18.04 box (johnny) has 
>> access.  But the ONN still has the same problem.  By the way, I turned 
>> off the V-32 backend and turned on the ubuntu 18.04 backend (on 
>> johnny).  ONN found it and asked to update the database, so I assume 
>> it was able to connect the it's mysql server.  I'll  check for 
>> differences between them.
>>
>> Don
>>
>
>Users and grants are nearly identical between the two, so I logged into 
>the ONN to look for clues.  From windows powershell:
>
>PS C:\Upgrades\platform-tools_r33.0.1-windows\platform-tools> ./ADB logcat
>...long list of stuff, display scrolls until it goes to end of log, then 
>I try to start mythfrontend on the ONN.  Normal startup, then fails on 
>database connection, with:
>
>05-16 11:41:47.162 10824 10858 E mfe     : 
>mythdbcon.cpp:237:OpenDatabase  [DBManager2] Unable to connect to database!
>05-16 11:41:47.162 10824 10858 E mfe     : 
>mythdbcon.cpp:238:OpenDatabase  Driver error was [1/2058]:
>05-16 11:41:47.162 10824 10858 E mfe     : QMYSQL: Unable to connect
>05-16 11:41:47.162 10824 10858 E mfe     : Database error was:
>05-16 11:41:47.162 10824 10858 E mfe     : Plugin caching_sha2_password 
>could not be loaded: dlopen failed: library 
>"/home/peter/proj/github.com/MythTV/packaging-master/android/libsinstall/lib/plugin/caching_sha2_password.so" 
>not found
>05-16 11:41:52.108  3734  4486 E WifiService: Permission violation - 
>getConfiguredNetworks not allowed for uid=10035, 
>packageName=com.google.android.tvrecommendations, 
>reason=java.lang.SecurityException: Location mode is disabled for the device
>05-16 11:41:52.484 10824 10858 I mfe     : 
>mythcontext.cpp:887:TestDBconnection  Start up testing connections. DB 
>192.168.0.184, BE , attempt 3, status dbStarted, Delay: 2000
>
>
>, then repeats several times.  It looks like the latest mysql has a 
>change in password encryption.  I've seen suggestion to revert it by 
>adding this to /etc/mysql/mysql.conf.d/mysqld.cnf with 
>"mysql_native_password" , or, updating the root user to 
>"caching_sha2_password".  Not sure which way to go, suggestions?
>
>Don

I think you will need to drop the user and re-create them like this:

DROP USER 'mythtv'@'%';
CREATE USER 'mythtv'@'%' IDENTIFIED WITH mysql_native_password;
ALTER USER 'mythtv'@'%' IDENTIFIED BY 'mythtv';

and do the GRANTs again.

Adding this:

[mysqld]
default-authentication-plugin=mysql_native_password

in the .cnf files will only affect new users created after you restart
MySQL.


More information about the mythtv-users mailing list