在 MySQL 中創建用戶并設置密碼的完整指南如下:
方法 1:使用 CREATE USER 語句(推薦)
-- 創建新用戶并設置密碼
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'your_password';-- 授予權限(示例:授予所有數據庫的所有權限)
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost' WITH GRANT OPTION;-- 刷新權限使更改生效
FLUSH PRIVILEGES;
方法 2:使用 GRANT 語句(舊版方式)
-- 創建用戶并授權(MySQL 5.7及以下)
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost'
IDENTIFIED BY 'your_password'
WITH GRANT OPTION;FLUSH PRIVILEGES;
注意:MySQL 8.0+ 已棄用此語法,推薦使用方法1
詳細操作步驟
-
登錄 MySQL
mysql -u root -p
-
創建用戶
-- 創建本地訪問用戶 CREATE USER 'xuehaiyang'@'localhost' IDENTIFIED BY 'StrongPassword123!';-- 創建遠程訪問用戶 CREATE USER 'xuehaiyang'@'%' IDENTIFIED BY 'RemotePass456!';
-
授予權限
-- 授予所有數據庫的完整權限 GRANT ALL PRIVILEGES ON *.* TO 'xuehaiyang'@'localhost';-- 授予特定數據庫權限 GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'xuehaiyang'@'%';
-
刷新權限
FLUSH PRIVILEGES;
-
驗證用戶
-- 查看用戶列表 SELECT user, host FROM mysql.user;-- 查看用戶權限 SHOW GRANTS FOR 'xuehaiyang'@'localhost';
修改用戶密碼
-- 方法1:ALTER USER (MySQL 5.7.6+)
ALTER USER 'xuehaiyang'@'localhost' IDENTIFIED BY 'NewPassword789!';-- 方法2:SET PASSWORD
SET PASSWORD FOR 'xuehaiyang'@'%' = PASSWORD('NewRemotePass!');-- 方法3:UPDATE系統表(不推薦)
UPDATE mysql.user SET authentication_string = PASSWORD('newpass')
WHERE user = 'xuehaiyang' AND host = 'localhost';
FLUSH PRIVILEGES;
用戶管理常用命令
操作 | 命令 |
---|---|
查看所有用戶 | SELECT user, host FROM mysql.user; |
刪除用戶 | DROP USER 'username'@'host'; |
重命名用戶 | RENAME USER 'old'@'host' TO 'new'@'host'; |
鎖定用戶 | ALTER USER 'user'@'host' ACCOUNT LOCK; |
解鎖用戶 | ALTER USER 'user'@'host' ACCOUNT UNLOCK; |
安全最佳實踐
-
使用強密碼:至少12位,包含大小寫字母、數字和特殊符號
CREATE USER 'secureuser'@'localhost' IDENTIFIED BY 'J5$tg!8xLp2qYb';
-
最小權限原則:
-- 只授予必要權限 GRANT SELECT, INSERT ON sales.* TO 'reports'@'10.0.0.%';
-
限制訪問來源:
-- 只允許特定IP段訪問 CREATE USER 'remote'@'192.168.1.%' IDENTIFIED BY 'password';
-
定期更新密碼:
-- 設置密碼過期策略 ALTER USER 'user'@'host' PASSWORD EXPIRE INTERVAL 90 DAY;
-
使用加密連接:
-- 要求SSL連接 CREATE USER 'secure'@'%' IDENTIFIED BY 'password' REQUIRE SSL;
連接測試
# 本地連接測試
mysql -u xuehaiyang -p -h localhost# 遠程連接測試(需開啟遠程訪問)
mysql -u xuehaiyang -p -h server_ip
注意:遠程連接需要確保 MySQL 配置允許遠程訪問(修改
bind-address
和防火墻設置)