一、创建用户设置权限
以root身份登录mysql
[root@ ~]mysql -uroot -p
[root@ ~]Enter password: xxxxxx
创建用户
mysql>create user 'wanglinyong'@'%' identified by 'wanglinyong9527';
授权
mysql>grant all privileges on *.* to 'wanglinyong'@'%' identified by 'wanglinyong9527' with grant option;
其中’wanglinyong’@’%’是允许该用户在任何主机上远程连接,如果只允许在某一台主机上连接,可指定ip
mysql>grant all privileges on *.* to 'wanglinyong'@'10.xx.xx.x' identified by 'wanglinyong9527' with grant option;
授权之后记得要刷新权限
mysql>flush privileges;
二、Navicate远程连接测试
1.如果连接失败,提示:
1045-Access denied for user'wanglinyong'@'ip'(using password:YES)
则表示密码输入错误。
2.如果提示:
ERROR 2003(HY000): Can’t connect to MySQL server on xxxxx
如果服务器是阿里云的,可能没有开通3306端口,要去服务器上添加安全组,增加3360端口即可
3.Navicate连接成功后,只有information_schema一个数据库
在linux系统以root用户登录
先查一下其他数据库是否被删除
mysql>show databases;
如果还在,查看下mysql库的用户表
mysql>select host,user from mysql.user;
结果如下:
+----------------+-----------------+
| host | user |
+----------------+-----------------+
| % | wanglinyong |
| localhost | mysql.session |
| localhost | root |
+----------------+-----------------+
3 rows in set (0.00 sec)
说明wanglinyong用户允许在任何远程主机登录
然后查看,远程登录的用户是否有权限
mysql> show grants for 'wanglinyong'@'%';
结果不是
GRANT ALL PRIVILEGES ON *.* TO 'wanglinyong5112'@'%' WITH GRANT OPTION
说明权限不够,重新授权
mysql>grant all privileges on *.* to 'wanglinyong'@'%' identified by 'wanglinyong9527' with grant option;
刷新权限:
mysql>flush privileges;
重新连接应该就OK了!
注意
如果还不行, vi /etc/mysql/mysql.conf.d/mysqld.cnf,检查下是否有
bind-address = 127.0.0.1
如果有,请把它注释掉(加#号注释)。如果找不到mysqld.cnf,有的可能在 /etc/my.cnf文件内
保存退出后重启mysql服务
sudo /etc/init.d/mysql restart
或者
systemctl restart mysqld