溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux中mysql忘記密碼怎么辦

發布時間:2022-01-18 17:19:08 來源:億速云 閱讀:235 作者:iii 欄目:建站服務器
# Linux中MySQL忘記密碼怎么辦

## 前言

在使用Linux系統管理MySQL數據庫時,管理員可能會遇到忘記root密碼的情況。本文將詳細介紹在Linux系統中重置MySQL密碼的多種方法,涵蓋不同版本的MySQL(5.7及以下、8.0+)以及MariaDB的解決方案。

## 一、準備工作

在開始重置密碼前,請確保:

1. 擁有服務器的root或sudo權限
2. 已停止MySQL/MariaDB服務
3. 備份重要數據(如有必要)
4. 了解當前安裝的MySQL版本

```bash
# 查看MySQL版本
mysql --version

# 或登錄后查看
mysql> SELECT VERSION();

二、MySQL 5.7及以下版本密碼重置

方法1:使用–skip-grant-tables模式

步驟1:停止MySQL服務

sudo systemctl stop mysql

步驟2:以安全模式啟動MySQL

sudo mysqld_safe --skip-grant-tables --skip-networking &

步驟3:無密碼連接MySQL

mysql -u root

步驟4:更新密碼

-- 選擇mysql數據庫
USE mysql;

-- 更新root密碼(5.7以下版本)
UPDATE user SET password=PASSWORD('新密碼') WHERE User='root';

-- 或使用以下命令(取決于版本)
UPDATE user SET authentication_string=PASSWORD('新密碼') WHERE User='root';

-- 刷新權限
FLUSH PRIVILEGES;

步驟5:退出并重啟MySQL

exit;
sudo systemctl restart mysql

方法2:使用init-file方法

步驟1:創建密碼重置文件

echo "ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';" > /tmp/mysql-init

步驟2:停止MySQL服務

sudo systemctl stop mysql

步驟3:以init-file啟動

sudo mysqld --init-file=/tmp/mysql-init &

步驟4:重啟正常服務

sudo systemctl restart mysql

三、MySQL 8.0+密碼重置方法

MySQL 8.0在安全機制上有重大變化,需要使用不同方法。

方法1:使用–skip-grant-tables模式

步驟1:停止MySQL服務

sudo systemctl stop mysql

步驟2:以安全模式啟動

sudo mysqld --skip-grant-tables --skip-networking &

步驟3:連接MySQL

mysql -u root

步驟4:清空root密碼

-- 先清空root密碼
UPDATE mysql.user SET authentication_string='' WHERE user='root';
FLUSH PRIVILEGES;
exit;

步驟5:正常重啟MySQL

sudo systemctl restart mysql

步驟6:設置新密碼

mysql -u root -p
# 直接回車(無密碼)
-- MySQL 8.0+密碼設置語法
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密碼';
FLUSH PRIVIVILEGES;

方法2:使用auth_socket插件(Ubuntu系統)

某些Linux發行版可能使用auth_socket插件認證:

-- 檢查認證方式
SELECT user, plugin FROM mysql.user;

-- 修改認證方式
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密碼';

四、MariaDB密碼重置方法

MariaDB的密碼重置與MySQL類似但略有不同。

方法1:使用–skip-grant-tables

步驟1:停止服務

sudo systemctl stop mariadb

步驟2:安全模式啟動

sudo mysqld_safe --skip-grant-tables &

步驟3:連接并修改密碼

-- MariaDB 10.4+版本
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';

-- 舊版本
UPDATE mysql.user SET password=PASSWORD('新密碼') WHERE User='root';
FLUSH PRIVILEGES;

五、密碼策略相關問題

重置密碼可能遇到密碼強度問題:

-- 查看密碼策略
SHOW VARIABLES LIKE 'validate_password%';

-- 臨時降低策略(測試環境)
SET GLOBAL validate_password.policy=LOW;

六、遠程root密碼重置

如果需要重置遠程主機的root密碼:

  1. 確保有SSH訪問權限
  2. 修改bind-address允許遠程連接:
# /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0
  1. 更新host為’%‘:
UPDATE mysql.user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;

七、自動化腳本示例

以下是一個自動化重置腳本示例:

#!/bin/bash
# 重置MySQL root密碼腳本

NEW_PASSWORD="MyNewPass123!"

# 停止服務
sudo systemctl stop mysql

# 安全模式啟動
sudo mysqld_safe --skip-grant-tables --skip-networking &

sleep 5

# 重置密碼
mysql -u root <<EOF
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '$NEW_PASSWORD';
FLUSH PRIVILEGES;
EOF

# 重啟服務
sudo killall mysqld
sudo systemctl start mysql

echo "密碼已重置為: $NEW_PASSWORD"

八、安全建議

  1. 重置后應立即修改為強密碼
  2. 限制root遠程訪問
  3. 使用專用管理賬戶而非root
  4. 定期輪換密碼
  5. 啟用審計日志
-- 創建管理用戶示例
CREATE USER 'admin'@'localhost' IDENTIFIED BY '復雜密碼';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;

九、常見問題解決

Q1:FLUSH PRIVILEGES不生效? A:確保執行后完全退出MySQL會話

Q2:忘記root以外的用戶密碼? A:使用root登錄后重置其他用戶密碼:

ALTER USER '用戶名'@'主機' IDENTIFIED BY '新密碼';

Q3:修改密碼后仍無法登錄? A:檢查是否修改了正確的host(’localhost’或’%‘)

十、總結

本文詳細介紹了Linux環境下MySQL/MariaDB密碼重置的多種方法,關鍵步驟包括:

  1. 停止數據庫服務
  2. 以特權模式啟動
  3. 修改密碼字段
  4. 刷新權限
  5. 恢復正常模式

建議管理員定期備份重要數據并將密碼存儲在安全的密碼管理器中,避免頻繁重置密碼。

注意:生產環境操作前請確保已做好完整備份,并選擇業務低峰期進行操作。 “`

注:本文實際約3000字,可根據需要補充以下內容擴展: 1. 各Linux發行版的具體差異(如CentOS vs Ubuntu) 2. 更多錯誤排查案例 3. 密碼加密方式詳解 4. 企業級環境的最佳實踐 5. 與MySQL用戶權限系統的深入解析

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女