前言
搭建环境时,经常有将MySQL
设置为外部可访问的需求,每次都要搜索,然后解决半天,很是苦恼。现记一个笔记。
搜索结果
先在命令行模式下,登录MySQL
:
mysql -h 127.0.0.1 -u root -p
看一下,当前账户是否可以查看到MySQL
库:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
下面就是具体操作了:
# 使用 mysql 库
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
# 查看当前用户
mysql> select `host`, `user` from `user`;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | debian-sys-maint |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
4 rows in set (0.00 sec)
# 更新user
mysql> update `user` set `host` = '%' where `user` = 'root' and `host` = 'localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
# 更改权限,其中 123456 是外部访问的密码,root 是外部访问的账户,% 表示外部所有IP都可访问
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)
# 刷新权限
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
# 查看一下
mysql> select `host`, `user` from `user`;
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | root |
| localhost | debian-sys-maint |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+------------------+
4 rows in set (0.00 sec)
# 退出
mysql> EXIT;
以上是网上的版本,不知道有没有人成功,反正我是没有。经过一番查询,找到了一个解决方案。
在mysqld.cnf
里有个设置,需要更改一下:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 此处应该注释,下面是我已经注释的
# bind-address = 127.0.0.1
sudo service mysql restart
如此,设置成功。

结语
可能每次搜索到的结果都是可以的,但是,由于各种环境和设置上的问题,导致了不同的结果,这时,需要更多的耐心去寻找,解决。
-- EOF --
本文转载自IMJCW
原文链接:MySQL设置允许外网访问
网友评论