在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 數據庫的用戶,並授予其對特定數據庫的操作權限。