MySQL 8 允许远程主机连接本地服务器

MySQL 8 允许远程主机连接本地服务器

环境信息

Ubuntu 版本信息:

$ lsb_release --all
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.3 LTS
Release:	18.04
Codename:	bionic

MySQL 版本信息:

$ mysql --version
mysql  Ver 8.0.19 for Linux on x86_64 (MySQL Community Server - GPL)

新建账户、分配权限

默认情况下,MySQL 只允许本地连接,查看 mysql 数据库的 user 表,可以看到所有用户都只允许通过 localhost 连接服务器:

mysql> select host, user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
4 rows in set (0.00 sec)

我们可以新建一个账户:

mysql> create user 'root'@'192.168.1.4' // 'user_name'@'host_name'
    -> identified by 'password'; // 密码
Query OK, 0 rows affected (0.09 sec)

以上的命令表示:创建一个账户,用户名为 root,密码为 password,允许 IP 为 192.168.1.4 的主机连接到本机的 MySQL 服务器。

新建的账户被添加到 mysql 数据库的 user 表中:

mysql> select host,user from user;
+-------------+------------------+
| host        | user             |
+-------------+------------------+
| 192.168.1.4 | root             |
| localhost   | mysql.infoschema |
| localhost   | mysql.session    |
| localhost   | mysql.sys        |
| localhost   | root             |
+-------------+------------------+
5 rows in set (0.00 sec)

然后分配权限给该账户:

mysql> GRANT ALL // 所有权限
    -> ON *.* // 任意数据库的任意表
    -> TO 'root'@'192.168.1.4'; // 给那一个账户
Query OK, 0 rows affected (0.11 sec)

开放端口

查看防火墙的状态:

$ sudo ufw status
[sudo] password for mk: 
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere                     
22 (v6)                    ALLOW       Anywhere (v6)       

我们需要开放 3306 端口的 TCP 协议:

$ sudo ufw allow 3306/tcp
Rule added
Rule added (v6)

重新加载防火墙规则:

$ sudo ufw reload
Firewall reloaded

重新查看防火墙状态:

$ sudo ufw status 
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere                  
3306/tcp                   ALLOW       Anywhere                  
22 (v6)                    ALLOW       Anywhere (v6)             
3306/tcp (v6)              ALLOW       Anywhere (v6)

完成以上的操作之后,指定 IP 的远程客户端便可通过该账户连接到本机的 MySQL 服务器。

参考

Adding Accounts, Assigning Privileges, and Dropping Accounts

Access Control, Stage 1: Connection Verification

Specifying Account Names

CREATE USER Statement

发布了55 篇原创文章 · 获赞 0 · 访问量 3168

猜你喜欢

转载自blog.csdn.net/qq_29761395/article/details/104251341