首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MySQL 命令行創建用戶與授權完整指南:從安裝到遠程訪問配置

     編輯:程式設計疑難解答

場景

剛安裝 MySQL,需在命令行創建用戶 `hr`、密碼 `123456`,並授予適當權限。

標準操作步驟

1. 登錄 MySQL (Root 用戶)

mysql -u root -p
# 輸入 root 密碼 (若未設置密碼直接回車)

2. 創建用戶 (MySQL 5.7+ / 8.0 推薦語法)

-- 指定主機為 % 允許遠程連接,或 localhost 僅本地
CREATE USER 'hr'@'%' IDENTIFIED BY '123456';
-- 或僅本地
CREATE USER 'hr'@'localhost' IDENTIFIED BY '123456';

3. 授權 (按需最小權限原則)

-- 授予所有數據庫所有表的所有權限 (生產環境慎用!)
GRANT ALL PRIVILEGES ON *.* TO 'hr'@'%' WITH GRANT OPTION;

-- 推薦:僅授予特定數據庫權限
GRANT ALL PRIVILEGES ON `mydb`.* TO 'hr'@'%';

-- 僅讀權限示例
GRANT SELECT ON `mydb`.* TO 'hr'@'%';

4. 刷新權限生效

FLUSH PRIVILEGES;

5. 驗證用戶創建

SELECT User, Host FROM mysql.user WHERE User = 'hr';
SHOW GRANTS FOR 'hr'@'%';

完整命令序列 (複製即用)

mysql -u root -p
-- 在 MySQL 提示符下執行:
CREATE USER 'hr'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'hr'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

關鍵注意事項

項目說明
主機名 `%` vs `localhost``%` 允許任意 IP 連接;`localhost` 僅本地 Unix socket/127.0.0.1。生產環境建議限制具體 IP (如 `'hr'@'192.168.1.%'`)。
MySQL 8.0 認證插件默認 `caching_sha2_password`,舊客端 (Navicat 12-、舊 JDBC) 可能不支持。需改用 `mysql_native_password`:
`ALTER USER 'hr'@'%' IDENTIFIED WITH mysql_native_password BY '123456';`
防火牆/安全組服務器防火牆需開放 3306 端口;雲服務器需配置安全組入站規則。
bind-address 配置`/etc/mysql/my.cnf` 或 `mysqld.cnf` 中 `bind-address = 0.0.0.0` 允許遠程連接 (默認 127.0.0.1 僅本地)。修改後重啟 MySQL。
密碼策略若報錯 "密碼不符合策略",可降低 `validate_password.policy` 或設置更複雜密碼。

常見報錯對照

  • ERROR 1396 (HY000): Operation CREATE USER failed for 'hr'@'%' → 用戶已存在,先 `DROP USER 'hr'@'%';`。
  • ERROR 1045 (28000): Access denied for user 'hr'@'...' → 密碼錯誤、主機不匹配、權限未刷新、防火牆攔截、bind-address 未配置。
  • ERROR 1133 (42000): Can't find any matching row in the user table → `FLUSH PRIVILEGES` 或用戶名/主機拼寫錯誤。

總結

MySQL 創建用戶授權核心四步:登錄 Root → CREATE USER → GRANT PRIVILEGES → FLUSH PRIVILEGES。生產環境務必遵循最小權限原則、限制訪問主機、配置防火牆、使用強密碼、注意認證插件兼容性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved