如果你是第一次設定 MySQL 或 MariaDB 資料庫,你可以直接執行 mysql_secure_installation 來實現基本的安全設定。
其中一項是設定資料庫 root 帳户的密碼 – 你必須保持私密,並僅在絕對需要時使用。如果你忘記了密碼或需要重置密碼(例如,當資料庫管理員換人或被裁員!),這篇文章會派上用場。我們將解釋如何在 Linux 中重置或恢復 MySQL 或 MariaDB 的 root 密碼。
雖然我們將在本文中使用 MariaDB,但這些説明同樣也適用於 MySQL 。
恢復 MySQL 或者 MariaDB 的 root 密碼
開始之前,先停止資料庫服務並檢查服務狀態,我們應該可以看到先前設定的環境變數:
————- SystemD ————-
# systemctl stop mariadb
————- SysVinit ————-
# /etc/init.d/mysqld stop
接下來,用 –skip-grant-tables 選項啓動服務:
————- SystemD ————-
# systemctl set-environment MYSQLD_OPTS=”–skip-grant-tables”
# systemctl start mariadb
# systemctl status mariadb
————- SysVinit ————-
# mysqld_safe –skip-grant-tables &
使用 skip tables 啓動 MySQL/MariaDB
這可以讓你不用 root 密碼就能連線到資料庫(你也許需要切換到另外一個終端上):
# mysql -u root
接下來,按照下面列出的步驟來。
MariaDB [(none)]> USE mysql;
MariaDB [(none)]> UPDATE user SET password=PASSWORD(‘YourNewPasswordHere’) WHERE User=’root’ AND Host = ‘localhost’;
MariaDB [(none)]> FLUSH PRIVILEGES;
最後,停止服務,取消環境變數設定並再次啓動服務:
————- SystemD ————-
# systemctl stop mariadb
# systemctl unset-environment MYSQLD_OPTS
# systemctl start mariadb
————- SysVinit ————-
# /etc/init.d/mysql stop
# /etc/init.d/mysql start
這可以讓先前的改變生效,允許你使用新的密碼連線到資料庫。