设置mysql远程连接root权限
在远程连接mysql的时候应该都碰到过,root用户无法远程连接mysql,只可以本地连,对外拒绝连接。需要建立一个允许远程登录的数据库帐户,这样才可以进行在远程操作数据库。默认情况下MYSQL数据库的系统数据库mysql系统表user内用户权限只提供localhost本机登陆;需要更改权限才能实现远程连接MYSQL数据库。
通过以下方式来确认:
root#mysql -h localhost -uroot -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 4.0.20a-debug
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> use mysql; (此DB存放MySQL的各种配置信息)
Database changed
mysql> select host, user, password from user;(查看用户的权限情况)
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | root | *4ACFE3202A5FF5CF467898FC58AAB1D615029441 |
| 127.0.0.1 | root | *4ACFE3202A5FF5CF467898FC58AAB1D615029441 |
| localhost | | |
+-----------+------+-------------------------------------------+
4 rows in set (0.01 sec)
由此可以看出,只能以localhost的主机方式访问。
解决方法:
mysql> Grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘kdm001‘ with grant option;
(%表示是所有的外部机器,如果指定某一台机,就将%改为相应的机器名;‘root’则是指要使用的用户名,)
mysql> flush privileges; (运行此句才生效,或者重启MySQL)
Query OK, 0 rows affected (0.03 sec)
再次查看。。
mysql> select host, user, password from user;
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | root | *4ACFE3202A5FF5CF467898FC58AAB1D615029441 |
| 127.0.0.1 | root | *4ACFE3202A5FF5CF467898FC58AAB1D615029441 |
| localhost | | |
| % | root | *4ACFE3202A5FF5CF467898FC58AAB1D615029441 |
+-----------+------+-------------------------------------------+
4 rows in set (0.01 sec)
可以看出已经添加了一个新的用户,退出,试试效果....现在可以成功登录了...
如果还无法解决:
1)确保mysql服务已经启动: service mysql start
2)在装有sqlyog的端尝试在命令行中ping目标ip,确保能ping通
3)在需要连接的服务器端查看mysql用户名和权限,确保sqlyog输入的用户名和密码正确
4)在需要连接的服务器端查看用户权限:show grants; 如果只有Grants [email protected] 一行的话:
重置密码mysql> set password for ‘root‘@‘172.16.124.1‘=password(‘coship‘);
mysql> flush privileges;
5)记得关闭VMware的防火墙
6)打开/etc/my.cnf 文件,bind-address = ******** 一句前边加上 # ,注释掉
再加上一下两句:
skip-external-locking
skip-name-resolve
7)很重要的一步!!!重启mysql: service mysql restart
mysql数据库远程访问设置方法
1、修改localhost
更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改成"%"
mysql>use mysql;
mysql>update user set host = ‘%‘ where user = ‘root‘;
mysql>select host, user from user;
mysql>FLUSH PRIVILEGES;
2、指定授权
使用myuser/mypassword从任何主机连接到mysql服务器:
GRANT ALL PRIVILEGES ON *.* TO ‘myuser‘@‘%‘ IDENTIFIED BY ‘mypassword‘ WITH GRANT OPTION;
使用myuser/mypassword从ip为192.168.225.166的主机连接到mysql服务器:
GRANT ALL PRIVILEGES ON *.* TO ‘myuser‘@‘192.168.225.166‘ IDENTIFIED BY ‘mypassword‘ WITH GRANT OPTION;
3、泛授权
mysql -h localhost -u root
mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ WITH GRANT OPTION; //赋予任何主机上以root身份访问数据的权限
mysql>FLUSH PRIVILEGES;
解决Mysql无法远程连接的问题
1、Mysql的端口是否正确
通过netstat -ntlp 查看端口占用情况,一般情况下端口是3306。在用工具连接MySQl是要用到端口。例如My Admin\My Query Browser\MySQl Front等。
2、检查用户权限是否正确
mysql库的user表里有两条记录:host分别为localhost和%(为了安全,%可以换成你需要外部连接的IP)。
3、查看/etc/mysql/my.cnf中,skip-networking 是否已被注掉
需要注掉
报错:ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘192.168.51.112‘ (111)
sudo gedit /etc/mysql/my.cnf
#skip-external-locking
#bind-address = 127.0.0.1
skip-name-resolve
4、查看iptables是否停掉,没关的情况下,无法连接
通过:service iptables stop临时关闭。
报错:ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘192.168.51.112‘ (113)