在MySQL中创建用户并赋予远程登录权限

在MySQL中,创建一个可以远程访问的用户,并授予其对特定数据库的权限是一个常见的需求。本文将详细介绍如何实现这一操作。

步骤一:登录到MySQL

首先,以管理员身份(例如 root 用户)登录到 MySQL:

Terminal window
1
mysql -u root -p

步骤二:创建数据库并设置编码

创建名为 project 的数据库,并使用 utf8mb4 编码:

1
CREATE DATABASE project CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

步骤三:创建用户并允许从任何 IP 地址访问

创建名为 myuser 的用户,并允许其从任何 IP 地址访问。设置密码,例如 myuser_password

1
CREATE USER 'myuser'@'%' IDENTIFIED BY 'myuser_password';

步骤四:授予用户权限

授予 myuser 用户对 project 数据库的所有权限:

1
GRANT ALL PRIVILEGES ON project.* TO 'myuser'@'%';

步骤五:刷新权限

刷新权限表以使更改生效:

1
FLUSH PRIVILEGES;

完整的 SQL 脚本

以下是完整的 SQL 脚本,涵盖了创建数据库、用户并授予权限的全部步骤:

1
-- 创建数据库并设置编码
2
CREATE DATABASE project CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3
4
-- 创建用户并设置允许从任何 IP 地址访问
5
CREATE USER 'myuser'@'%' IDENTIFIED BY 'myuser_password';
6
7
-- 授予用户权限
8
GRANT ALL PRIVILEGES ON project.* TO 'myuser'@'%';
9
10
-- 刷新权限
11
FLUSH PRIVILEGES;

删除已有的用户

如果已经存在名为 myuser 的用户,并且想要重新创建,可以先删除已有用户:

1
DROP USER 'myuser'@'localhost';
2
DROP USER 'myuser'@'%';
3
4
FLUSH PRIVILEGES;

配置 MySQL 允许远程访问

确保 MySQL 配置文件允许远程访问。编辑 MySQL 配置文件(如 /etc/mysql/mysql.conf.d/mysqld.cnf/etc/my.cnf),找到以下行:

1
bind-address = 127.0.0.1

将其注释掉或修改为:

1
bind-address = 0.0.0.0

然后,重新启动 MySQL 服务:

Terminal window
1
sudo systemctl restart mysql

配置防火墙

如果你的服务器有防火墙,请确保允许 MySQL 端口(通常是 3306)通过防火墙。比如使用 ufw

Terminal window
1
sudo ufw allow 3306/tcp

如果是阿里云服务器,可以在安全组入方向规则里把MySQL的端口打开

通过以上步骤,你可以成功创建一个可以远程访问 MySQL 数据库的用户,并授予其对特定数据库的操作权限。

美团外卖红包 饿了么红包 支付宝红包