如何开启MySQL中root账户的远程登录

by LauCyun Mar 29,2016 21:15:53 2,177 views

基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要开启root的远程访问权限。下面是基本的步骤:

1、登录到mysql中,为root进行远程访问的授权,执行下面的命令:

mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "password" WITH GRANT OPTION;
mysql> flush privileges;

第一行命令解释如下:

  • *.*:第一个*代表数据库名;第二个*代表表名。这里的意思是所有数据库里的所有表都授权给用户。
  • root:表示授予root账号。
  • "%":表示任何主机都可以远程登录到该服务器上访问。如果要限制只有某个IP可以访问,将其换成相应的IP即可,如:
    mysql> GRANT ALL PRIVILEGES ON *.* TO root@"192.168.0.100" IDENTIFIED BY "password" WITH GRANT OPTION;
  • "password":表示分配账号对应的密码,这里密码自己替换成你的mysql root帐号密码。

第二行命令表示从mysql数据库的GRANT表中重新加载权限数据。因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。

2、修改/etc/mysql/my.cnf或者/etc/my.cnf,需要root用户权限。找到文件中的:

bind-address = 127.0.0.1

将其注释掉,或者修改为bind-address = 0.0.0.0,然后保存。

3、重新启动MySQL服务器。执行下面的几条命令即可:

$ sudo /etc/init.d/mysql restart
# 或者
$ service mysqld restart

如果还是能访问的话,那么检查一下iptables有没有开放3306端口,开启的命令如下:

$ iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
$ service iptables save  # 重启后也有效

执行完上面的三步后,就可以通过远程机器连接了数据库了。

 

上面这种方法叫授权法,再介绍一种方法,基本的步骤:

1、登录到mysql中,为root进行远程访问的授权,执行下面的命令:

mysql> UPDATE mysql.user SET host='%' WHERE user='root' AND host='localhost';
mysql> flush privileges;

第一行命令表示把数据库mysqluser表中user='root'host='localhost'的用户的host改为%

接下来的步骤同上面。

Tags