默认MySQL的用户是没有远程访问权限的,因此程序和数据库不在同一台服务器上时,我们需要打开MySQL的远程访问权限。
1、登陆到MySQL中,为root进行远程访问的授权
1.1改表法:
修改mysql库的user表,将host项,从localhost改为%。%这里表示 的是允许任意host访问,如果只允许某一个ip访问,则可改为相 应的ip,比如可以将localhost改为192.168.1.123,这表示只允许局域网的192.168.1.123这个ip远程访问mysql。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
"%"表示任何主机都可以远程登录到该服务器上访问。如果要限制只有某台机器可以访问,将其换成相应的IP即可。
2、修改/etc/mysql/my.cnf,需要root用户权限。找到文件中的:
bind-address = 127.0.0.1
将上面的语句注释掉,保存。
3、重新启动MySQL服务器
sudo / etc / init.d / mysql restart
1、登陆到MySQL中,为root进行远程访问的授权
1.1改表法:
修改mysql库的user表,将host项,从localhost改为%。%这里表示 的是允许任意host访问,如果只允许某一个ip访问,则可改为相 应的ip,比如可以将localhost改为192.168.1.123,这表示只允许局域网的192.168.1.123这个ip远程访问mysql。
mysql> use mysql;
mysql>
update
user
set
host =
'%'
where
user
=
'root'
;
注意:如果遇到这个错误,ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'。
select
host,
user
from
user
;查看一下数据库host信息是否已经有了%这个值,如果有,直接运行下面命令。
mysql>
select
host,
user
from
user
;
mysql> flush
privileges
;(使修改生效)
1.2授权法:
例如,你想用户(root)使用密码(root)从任何主机连接到mysql服务器的话。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
"%"表示任何主机都可以远程登录到该服务器上访问。如果要限制只有某台机器可以访问,将其换成相应的IP即可。
2、修改/etc/mysql/my.cnf,需要root用户权限。找到文件中的:
bind-address = 127.0.0.1
将上面的语句注释掉,保存。
3、重新启动MySQL服务器
sudo / etc / init.d / mysql restart