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

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

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

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

启动服务,进入数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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)  

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

 

posted @   ForLivetoLearn  阅读(2922)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示