現象:登錄 MySQL 後執行任意命令(甚至 SHOW DATABASES;)均報錯:
Ignoring query to other database
乍看像權限或庫不存在,實際是登錄命令寫錯導致未正確認證用戶身份。
mysql -root -p
此處 -root 被解析為密碼參數值,而非用戶名。MySQL 嘗試用匿名用戶、密碼 root 登錄,進入後無默認庫上下文,故任何查詢被視為「其他數據庫」而忽略。
mysql -u root -p
-u / --user:指定用戶名-p / --password:提示輸入密碼(不寫值,交互輸入最安全)-h:主機,默認 localhost-P:端口,默認 3306mysql -u root -p,輸入正確密碼SELECT USER(), CURRENT_USER(); 確認身份SHOW DATABASES; 應正常返回列表| 錯誤寫法 | 正確寫法 | 說明 |
|---|---|---|
mysql -root -p | mysql -u root -p | 缺 -u 導致 root 被當密碼 |
mysql -u root -ppassword | mysql -u root -p 回車輸入 | 命令行明文密碼泄露風險 |
mysql -h 127.0.0.1 -u root | 同左 | TCP 連接(非 Unix socket),觸發網絡層權限匹配 |
# 推薦:配置文件 ~/.my.cnf (600 權限)
[client]
user = root
password = "StrongPass!"
host = 127.0.0.1
port = 3306
default-character-set = utf8mb4
# 然後直接執行
mysql
mysql --defaults-file=/path/.my.cnf