Mysql

在全新的 mysql 5.7 安裝中設置 root 密碼

  • October 5, 2019

我正在嘗試在服務中安裝 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';

引用自:https://dba.stackexchange.com/questions/127537