首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Linux 下 MySQL 用戶管理與常見訪問問題解決指南

     編輯:MySQL 綜合教學

1. MySQL 安裝與基礎配置

在 Linux 系統中,使用 yum 安裝 MySQL 是最高效的方式,它能自動解決依賴關係。執行以下命令即可一鍵完成安裝:

[root@localhost ~]# yum install mysql-server mysql-devel

安裝完成後,啟動服務並登入 MySQL:

[root@localhost ~]# /etc/init.d/mysqld start
Starting mysqld: [ OK ]
[root@localhost ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor...
mysql> create database db_test;
Query OK, 1 row affected (0.02 sec)
mysql> grant all on *.* to "user"@"localhost" identified by "123";
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye

主要配置文件 /etc/my.cnf 關鍵參數如下:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
  • datadir:數據文件存放路徑(如 /var/lib/mysql)
  • log-error:錯誤日誌路徑(/var/log/mysqld.log)
  • 默認監聽端口:3306

2. MySQL 用戶管理核心操作

2.1 修改 root 密碼(安全首要步驟)

MySQL 安裝後默認存在空密碼的 root 用戶,極不安全。請立即修改:

[root@localhost ~]# mysqladmin -u root -p password '123'
Enter password: 

注意:若已修改過密碼,需輸入舊密碼;首次修改時可省略 -p。

2.2 創建用戶的兩種方式

MySQL 用戶信息存儲在 mysql.user 表中,可通過 SQL 直接操作。

方式一:GRANT 語句(推薦,可同時授權)

mysql> grant all on *.* to "test"@"localhost" identified by "123";
Query OK, 0 rows affected (0.00 sec)
  • all:所有權限,可細化為 select, insert, update, delete
  • *.*:所有數據庫.所有表,可指定為 db_name.*
  • localhost:主機匹配,% 表示任意主機

方式二:直接操作 user 表(需手動授權)

mysql> insert into mysql.user(Host, User, Password) values("localhost", "sqluser", password("123"));
Query OK, 1 row affected, 3 warnings (0.05 sec)

關鍵步驟: 任何用戶變更後必須執行 flush privileges; 刷新權限表,否則不生效。

2.3 常用管理命令

  • 查看用戶:select user, password from mysql.user;
  • 刪除用戶:delete from mysql.user where user='XXX'; + flush privileges;

3. 實戰:解決常見訪問故障

所有疑難雜症的根源幾乎都指向同一個原因——root 用戶空密碼。建議安裝即修改為非空密碼。

故障一:Access denied (using password: NO/YES)

現象: 空密碼登入時忽好忽壞,報錯 Access denied for user 'root'@'localhost' (using password: NO) 或 YES,甚至 mysqladmin 修改密碼也失敗。

根因: 空密碼導致認證機制混亂,MySQL 內部存在多個 root 記錄(localhost, 127.0.0.1, ::1 等),認證插件匹配失敗。

解決方案(跳過權限表啟動修復):

# /etc/init.d/mysql stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('123') where USER='root';
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysqld restart
# mysql -uroot -p
Enter password: <輸入新密碼123>

故障二:ERROR 1044 - 空用戶幹擾

現象: 明明用 root 登入,創建數據庫卻報 Access denied for user ''@'localhost' to database 'db_mysql'。

根因: mysql.user 表中存在「用戶名為空、密碼為空」的匿名用戶。當 root 密碼為空時,MySQL 認證插件可能錯誤匹配到該匿名用戶,導致權限不足。

解決方案:

# service mysqld stop
# mysqld_safe --skip-grant-tables &
# 新開終端執行:
# mysql -u root mysql
mysql> delete from user where USER='';
mysql> FLUSH PRIVILEGES;
mysql> \q

總結

將 root 密碼設置為非空複雜密碼,可徹底規避上述 90% 的認證異常問題。密碼輸入錯誤會報 using password: YES,屬正常行為,與空密碼故障無關。

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