Mysql
在全新的 mysql 5.7 安裝中設置 root 密碼
我正在嘗試在服務中安裝 mysql
CentOS Linux release 7.2.1511
。看一下流程安裝:# sudo yum install mysql-server
輸出:
Dependencies Resolved =========================================================================================================================================================================================================== Package Arch Version Repository Size =========================================================================================================================================================================================================== Removing: mysql-community-client x86_64 5.7.10-1.el7 @mysql57-community 109 M mysql-community-server x86_64 5.7.10-1.el7 @mysql57-community 652 M Transaction Summary ===========================================================================================================================================================================================================
我執行了 mysql 守護程序:
# sudo service mysqld start
檢查服務:
# ps -ef|grep mysql mysql 1371 1 0 22:17 ? 00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
讓我發瘋的問題來了。我想第一次設置root密碼,所以我做了:
# sudo mysql_secure_installation // when password is required, I just type "enter key"
但輸出:保護 MySQL 伺服器部署。
輸入使用者 root 的密碼:錯誤:使用者 ‘root’@’localhost’ 的訪問被拒絕(使用密碼:否)
Google搜尋錯誤,在 90% 的情況下,解決方案是呼叫
mysqld_safe --skip-grant-tables &
命令:service mysqld stop mysqld_safe --skip-grant-tables & mysql --user=root mysql update user set Password=PASSWORD('new-password') where user='root'; flush privileges; exit;
但
mysqld_safe
提示“找不到命令”錯誤。我也用 測試過sudo mysqld --skip-grant-tables &
,但它什麼也沒做。如果您指導我正確的方向以設置 root 密碼,我將不勝感激。先感謝您。
在我對解決方案的瘋狂研究中,我查看
/var/log/mysqld.log
並發現了這一行:$$ Note $$為 root@localhost 生成一個臨時密碼:abc123
看起來 mysql 5.7+ 在安裝中生成一個隨機密碼並在該文件中提示。
如果您只是在 root 使用者下執行 mysql 命令,您將被授予訪問權限而無需輸入密碼,因為為 root@localhost 啟用了套接字身份驗證。
本指南具有誤導性。
設置密碼的唯一方法是切換到本機身份驗證,例如:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';