i've installed distro-packaged MDB

        mariadb -V
                mariadb  Ver 15.1 Distrib 10.4.13-MariaDB, for Linux (x86_64) 
using readline 5.1

on

        lsb_release -rd
                Description:    Arch Linux
                Release:        rolling
        uname -rm
                5.7.3-arch1-1 x86_64

i'd like to modify & delete/restore my 'root' user; an exercise in recovery ...

starting with a clean install,

        mysql -e "
         SELECT User, Host, HEX(authentication_string)
          FROM mysql.user;"
        "
                +-------------+-----------+----------------------------+
                | User        | Host      | HEX(authentication_string) |
                +-------------+-----------+----------------------------+
                | mariadb.sys | localhost |                            |
                | root        | localhost | 696E76616C6964             |
                | mysql       | localhost | 696E76616C6964             |
                +-------------+-----------+----------------------------+

        mysql -e "
         SELECT CONCAT('SHOW GRANTS FOR \'', user ,'\'@\'', host, '\';')
          FROM mysql.user
          WHERE  user = 'root';
        "
                +----------------------------------------------------------+
                | CONCAT('SHOW GRANTS FOR \'', user ,'\'@\'', host, '\';') |
                +----------------------------------------------------------+
                | SHOW GRANTS FOR 'root'@'localhost';                      |
                +----------------------------------------------------------+

adding grants & mod'ing,

        mysql
                >

         REVOKE ALL           ON *.* FROM 'root'@'localhost';
         REVOKE GRANT OPTION  ON *.* FROM 'root'@'localhost';
         REVOKE ALL           ON *.* FROM 'root'@'%';
         REVOKE GRANT OPTION  ON *.* FROM 'root'@'%';
         GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
         GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'         WITH GRANT OPTION;
         ALTER USER 'root'@'localhost' IDENTIFIED VIA unix_socket;
         ALTER USER 'root'@'%'         IDENTIFIED VIA unix_socket;
         FLUSH PRIVILEGES;
         exit;

works as expected

        mysql -e "
         SELECT CONCAT('SHOW GRANTS FOR \'', user ,'\'@\'', host, '\';')
          FROM mysql.user
          WHERE  user = 'root';
        "
                +----------------------------------------------------------+
                | CONCAT('SHOW GRANTS FOR \'', user ,'\'@\'', host, '\';') |
                +----------------------------------------------------------+
                | SHOW GRANTS FOR 'root'@'%';                              |
                | SHOW GRANTS FOR 'root'@'localhost';                      |
                +----------------------------------------------------------+

        mysql -e "
         SELECT CONCAT('plugin: ', plugin, '   \'', user, '\'@\'', host, '\';')
          FROM mysql.user
          WHERE  user = 'root';
        "
                
+-----------------------------------------------------------------+
                | CONCAT('plugin: ', plugin, '   \'', user, '\'@\'', host, 
'\';') |
                
+-----------------------------------------------------------------+
                | plugin: unix_socket   'root'@'localhost';                     
  |
                | plugin: unix_socket   'root'@'%';                             
  |
                
+-----------------------------------------------------------------+

        mysql -e "
         SELECT User, Host, HEX(authentication_string) FROM mysql.user;
        "
                +-------------+-----------+----------------------------+
                | User        | Host      | HEX(authentication_string) |
                +-------------+-----------+----------------------------+
                | mariadb.sys | localhost |                            |
                | root        | localhost |                            |
                | mysql       | localhost | 696E76616C6964             |
                | root        | %         |                            |
                +-------------+-----------+----------------------------+


        mysql -e status
                --------------
                mysql  Ver 15.1 Distrib 10.4.13-MariaDB, for Linux (x86_64) 
using readline 5.1

                Connection id:          24
                Current database:
                Current user:           root@localhost
                SSL:                    Not in use
                Current pager:          stdout
                Using outfile:          ''
                Using delimiter:        ;
                Server:                 MariaDB
                Server version:         10.4.13-MariaDB-log Arch Linux
                Protocol version:       10
                Connection:             Localhost via UNIX socket
                Server characterset:    utf8mb4
                Db     characterset:    utf8mb4
                Client characterset:    utf8
                Conn.  characterset:    utf8
                UNIX socket:            /run/mysqld/mysqld.sock
                Uptime:                 15 min 9 sec

                Threads: 8  Questions: 93  Slow queries: 0  Opens: 19  Flush 
tables: 1  Open tables: 13  Queries per second avg: 0.102
                --------------

if i stop, then safe-restart mdb

        systemctl stop mariadb.service
        killall mysqld
        killall mysqld
        sleep 10

        mysqld_safe \
         --defaults-file=/usr/local/etc/mariadb/my.cnf \
         --skip-grant-tables \
         --skip-networking &

        mysql -u root mysql
                MariaDB [(mysql)]>

server still looks good,

        status;
                --------------
                mysql  Ver 15.1 Distrib 10.4.13-MariaDB, for Linux (x86_64) 
using readline 5.1

                Connection id:          9
                Current database:       mysql
                Current user:           root@
                SSL:                    Not in use
                Current pager:          /usr/bin/less
                Using outfile:          ''
                Using delimiter:        ;
                Server:                 MariaDB
                Server version:         10.4.13-MariaDB-log Arch Linux
                Protocol version:       10
                Connection:             Localhost via UNIX socket
                Server characterset:    utf8mb4
                Db     characterset:    utf8mb4
                Client characterset:    utf8
                Conn.  characterset:    utf8
                UNIX socket:            /run/mysqld/mysqld.sock
                Uptime:                 14 sec

                Threads: 8  Questions: 37  Slow queries: 0  Opens: 34  Flush 
tables: 1  Open tables: 30  Queries per second avg: 2.642
                --------------

if I *destroy* the 'root' user

        user mysql;
        DELETE FROM mysql.user
         WHERE  user = 'root'
         AND host = 'localhost'
         OR  host = '%';
        flush privileges;
        SELECT User, Host, HEX(authentication_string) FROM mysql.user;

                +-------------+-----------+----------------------------+
                | User        | Host      | HEX(authentication_string) |
                +-------------+-----------+----------------------------+
                | mariadb.sys | localhost |                            |
                | mysql       | localhost | 696E76616C6964             |
                +-------------+-----------+----------------------------+


then, get a pass hash,

        select password('testpass');
                +-------------------------------------------+
                | password('testpass')                      |
                +-------------------------------------------+
                | *00E247AC5F9AF26AE0194B41E1E769DEE1429A29 |
                +-------------------------------------------+


& attempt to re-init & insert the 'root' user

        insert into `user` 
VALUES('localhost','root','*00E247AC5F9AF26AE0194B41E1E769DEE1429A29','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','');

it fails

        ERROR 1471 (HY000): The target table user of the INSERT is not 
insertable-into


what different/additional steps are required to recreate a deleted root user?


_______________________________________________
Mailing list: https://launchpad.net/~maria-discuss
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~maria-discuss
More help   : https://help.launchpad.net/ListHelp

Reply via email to