【笔记】linux下设置mysql允许远程连接

来源:互联网 发布:怎么实现搜索算法 编辑:程序博客网 时间:2024/06/08 16:01

默认情况下Linux的MySQL数据库mysql的user表内的用户权限只是对localhost即本机才能登陆,需要更改权限才可以远程连接。


登陆mysql

~$sudo mysql -h localhost -u root -p

Enter password:************

mysql>use mysql;//切换到mysql数据库,这个数据库存放MySQL的各种配置信息

Database changed
mysql> select host,user from user;//查看用户的权限情况
+------------------+------------------+
| host             | user             |
+------------------+------------------+
| 127.0.0.1        | root             |
| ::1              | root             |
| localhost        | root             |
+------------------+------------------+

5 rows in set (0.01 sec)

由此可以看出,只能以localhost的主机方式访问。


解决方法:添加用户权限

mysql> Grant all privileges on *.* to 'username'@'%' identified by 'abc123456' with grant option;
Query OK, 0 rows affected (0.00 sec)
/**

*  username是用户名;

*  %代表所有外部机器,如果指定某一台机就将%改成对应的机器名;

*  abc123456是登录密码

**/

mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)


mysql> select host,user from user;
+------------------+------------------+
| host             | user             |
+------------------+------------------+
| %                | root             |
| 127.0.0.1        | root             |
| ::1              | root             |
| localhost        | root             |
+------------------+------------------+
6 rows in set (0.00 sec)


修改MySQL配置文件my.conf

$ sudo vim /etc/mysql/my.cnf 

将 bind-address = 127.0.0.1 这一行注释掉, 即修改为:
#bind-address = 127.0.0.1
保存,配置就完成了.


然后重启MySQL

$ sudo /etc/init.d/mysql restart
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart

测试连接就可以成功远程连接数据库了。

/**

*  如果不注释这一行,就会在远程连接 mySql数据时,连接出现 2003-Can’t connect to MySQL on ’192.168.1.2’(10061)错误,是由于MySQL不准许远程连接。

*  PS:如果使用以上方法仍然不能远程连接mysql,那可能是如下原因导致的问题

* 1、linux的防火墙开了,屏蔽了mysql的3306端口,导致mysql连接不上

*  2、phpmyadmin里root用户下的“权限”标签下有个“按数据库指定权限”选项。需要“在下列数据库添加权限:”下拉选定你要设置的数据库及他的权限。

*  这样才可以连接那个数据库。

**/


0 0
原创粉丝点击