mysql root用户登录后无法查看数据库全部表

可能是把root@localhost用户删掉了。

首先停掉mysql服务,在/etc/my.cnf中添加 skip-grant-tables,同时可以添加skip-networking选项来禁用网络功能,防止这时其他人通过网络连接到数据库

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
skip-grant-tables   #添加这一行  

启动服务,进入数据库

MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

#查看有没有root@localhost用户,没有就用update添加
MariaDB [mysql]> select host,user,password from user;
+-----------------------+------+-------------------------------------------+
| host                  | user | password                                  |
+-----------------------+------+-------------------------------------------+
| %                     | LEE  | *E6CC90B878B948C35E92B003C792C46C58C4AF40 |
| %                     | root | *E6CC90B878B948C35E92B003C792C46C58C4AF40 |
| localhost             | root |                                           |
| localhost.localdomain |      |                                           |
| 127.0.0.1             | root |                                          |
+-----------------------+------+-------------------------------------------+
5 rows in set (0.00 sec)

#给root@localhost上密码
MariaDB [mysql]> UPDATE user SET password=PASSWORD('1') WHERE user='root' AND host='localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

#把相应的权限附上
MariaDB [mysql]> update user set  
    ->   `Select_priv` = 'Y',
    ->   `Insert_priv` = 'Y',
    ->   `Update_priv` = 'Y',
    ->   `Delete_priv` = 'Y',
    ->   `Create_priv` = 'Y',
    ->   `Drop_priv` = 'Y',
    ->   `Reload_priv` = 'Y',
    ->   `Shutdown_priv` = 'Y',
    ->   `Process_priv` = 'Y',
    ->   `File_priv` = 'Y',
    ->   `Grant_priv` = 'Y',
    ->   `References_priv` = 'Y',
    ->   `Index_priv` = 'Y',
    ->   `Alter_priv` = 'Y',
    ->   `Show_db_priv` = 'Y',
    ->   `Super_priv` = 'Y',
    ->   `Create_tmp_table_priv` = 'Y',
    ->   `Lock_tables_priv` = 'Y',
    ->   `Execute_priv` = 'Y',
    ->   `Repl_slave_priv` = 'Y',
    ->   `Repl_client_priv` = 'Y',
    ->   `Create_view_priv` = 'Y',
    ->   `Show_view_priv` = 'Y',
    ->   `Create_routine_priv` = 'Y',
    ->   `Alter_routine_priv` = 'Y',
    ->   `Create_user_priv` = 'Y',
    ->   `Event_priv` = 'Y',
    ->   `Trigger_priv` = 'Y',
    ->   `Create_tablespace_priv` = 'Y'
    ->   where user='root' and host='localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

#更新数据库
MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)  

在之后退出数据库,把刚才改的配置文件还原回来,重启数据库就好了。

初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
原文地址:https://www.cnblogs.com/forlive/p/9768006.html