navicat连接上centos7的mysql后只能看到information_schema库;创建数据库报错:MySQL错误:Access denied for user 'root'@'%'

首先你必须明白,出现这样的错误基本上都是权限问题导致的,网上能找到很多解决办法,但是没有系统性的去解决掉这个问题。

首先第一步排查问题:

你需要做的事情是,登陆linux服务器的mysql服务:

1.root用户登陆系统:mysql -u root -p mysql

2.切换数据库:use mysql

3.查询你数据库里是否存在用户为空的用户:select * from user where user='';

如何查询出来有数据:navicat连接上centos7的mysql后只能看到information_schema库;创建数据库报错:MySQL错误:Access denied for user 'root'@'%'

那么你需要删除,这样的空用户

delete from user where user='';

flush privileges; //重载权限表

4,查询mysql所有用户组权限:select user,host from user;

查询后会如果发现很多额外账户可能也会导致登录用户权限异常导致登录后无法使用;

我查询到自己这边有三个未使用的用户:lipsticks,ROOT,name=root and host =‘localhost’;

使用删除命令将他们删除:delect from where user=‘lipsticks’;delect from where user=‘ROOT’;

delect from where name=‘’root‘’ and host =‘localhost’;

5,给对应的账户赋予外网访问权限:

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

//myuser为账户名称一般为root, mypassword为你的数据库密码、

7,给root账户赋予问权限:

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'127.0.0.1' IDENTIFIED BY 'mypassword' WITH GRANT OPTION

//myuser为账户名称一般为root, mypassword为你的数据库密码

重启mysql服务可能你的问题已经解决了,如果还没有解决也不用着急我们在继续来看看:

8,首选还是得查询用户表:select * from user where user='root' and host='localhost';

如果如上图一样你看到localhost的权限都是N,这样也表示你本地没有具体权限;

9,给root用户授权:

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';

10.更新一下:flush privileges;

通过上述的方式基本上都应该可以解决你的问题,如果觉得文字对您有帮助,麻烦点个赞鼓励小小编,谢谢~