1. 程式人生 > >MySQL 修改使用者密碼及重置root密碼

MySQL 修改使用者密碼及重置root密碼

    為資料庫使用者修改密碼是DBA比較常見的工作之一。對於MySQL使用者賬戶的密碼修改,有幾種不同的方式,推薦的方式使用加密函式來修改密碼。本文主要描述了通過幾種不同的方式來修改使用者密碼以及mysql root賬戶密碼丟失(重置root密碼)的處理方法。

1、密碼修改的幾種方法

a、可以在建立使用者的時候指定密碼,以及直接使用grant建立使用者的時候指定密碼。
   對於已經存在的使用者直接使用grant方式也可以修改密碼
如下:

--演示版本
[email protected]calhost[(none)]> show variables like 'version%';  
+-------------------------+------------------------------+   
| Variable_name           | Value                        |  
+-------------------------+------------------------------+   
| version                 | 5.5.37                       |  
| version_comment         | MySQL Community Server (GPL) |  
| version_compile_machine | x86_64                       |  
| version_compile_os      | Linux                        |  
+-------------------------+------------------------------+   

--下面我們使用grant方式建立一個新帳戶fred,並設定密碼
[email protected]
[(none)]> grant usage on *.* to 'fred'@'localhost' identified by 'fred'; Query OK, 0 rows affected (0.00 sec) --檢視剛剛建立的賬戶 [email protected][(none)]> select host,user,password from mysql.user where user='fred'; +-----------+------+-------------------------------------------+ | host | user | password | +-----------+------+-------------------------------------------+ | localhost | fred | *6C69D17939B2C1D04E17A96F9B29B284832979B7 | +-----------+------+-------------------------------------------+ --下面可以成功登陸mysql SZDB:~ # mysql -ufred -pfred
[email protected]
[(none)]> b、使用set password方式來修改賬戶密碼 --下面我們使用set password方式來設定密碼 [email protected][(none)]> set password for 'fred'@'localhost'=password('passwd'); Query OK, 0 rows affected (0.00 sec) [email protected][(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) --再次登陸時,之前的密碼已經失效,無法登陸 SZDB:~ # mysql -ufred -pfred ERROR 1045 (28000): Access denied for user 'fred'@'localhost' (using password: YES) --下面使用新密碼登陸成功 SZDB:~ # mysql -ufred -ppasswd
[email protected]
[(none)]> --檢索資料庫是否存在jack使用者,如下密碼為null [email protected][(none)]> select host,user,password from mysql.user where user='jack'; +-----------+------+----------+ | host | user | password | +-----------+------+----------+ | localhost | jack | | +-----------+------+----------+ c、加密方式更新系統表user的password列 --我們嘗試直接更新密碼列(不使用加密函式方式) [email protected][(none)]> update mysql.user set password='jack' where user='jack'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 --由於直接使用明文,因此係統表user列password顯示為明文 [email protected][(none)]> select host,user,password from mysql.user where user='jack'; +-----------+------+----------+ | host | user | password | +-----------+------+----------+ | localhost | jack | jack | +-----------+------+----------+ --Author : Leshami --Blog :http://blog.csdn.net/leshami [email protected][(none)]> flush privileges; Query OK, 0 rows affected (0.02 sec) --此時無法登陸 SZDB:~ # mysql -ujack -pjack -h localhost ERROR 1045 (28000): Access denied for user 'jack'@'localhost' (using password: YES) --下面我們通過set方式來修改jack的密碼,提示找不到jack使用者 [email protected][(none)]> set password for 'jack'@'localhost'=password('jack'); ERROR 1133 (42000): Can't find any matching row in the user table --我們切換到mysql資料庫下嘗試, [email protected][(none)]> use mysql [email protected][mysql]> set password for 'jack'@'localhost'=password('passwd'); --在mysql資料庫下依舊無法更新使用者jack的密碼 ERROR 1133 (42000): Can't find any matching row in the user table --下面我們嘗試用password函式方式來更新password列 [email protected][mysql]> update user set password=password('passwd') where user='jack'; --此方式更新成功 Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 [email protected][mysql]> select host,user,password from user where user='jack'; --可以看到密碼已經變成了密文 +-----------+------+-------------------------------------------+ | host | user | password | +-----------+------+-------------------------------------------+ | localhost | jack | *59C70DA2F3E3A5BDF46B68F5C8B8F25762BCCEF0 | +-----------+------+-------------------------------------------+ [email protected][mysql]> flush privileges; Query OK, 0 rows affected (0.00 sec) --此時登陸成功 [email protected]:~> mysql -ujack -ppasswd [email protected][(none)]>

2、重置root帳戶密碼

--假定此時我們的root帳戶忘記或遺失了密碼,如下面的演示,我們給出的是xxx,不能登陸到mysql(真實的密碼為mysql)
SZDB:~ # mysql -uroot -pmysql

[email protected][(none)]> 

SZDB:~ # mysql -uroot -pxxx       #忘記密碼,此時無法正常登入  
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

--首先停止mysql伺服器
SZDB:~ # service mysql stop
Shutting down MySQL..                               done

--使用--skip-grant-tables選項跳過授權表驗證,
SZDB:~ # mysqld --help --verbose     #獲取mysqld幫助資訊

--skip-grant-tables Start without grant tables. This gives all users FULL
                      ACCESS to all tables.

--使用--skip-grant-tables啟動mysql伺服器
SZDB:~ # mysqld --skip-grant-tables --user=mysql &
[1] 10209
SZDB:~ # ps -ef | grep mysql
mysql    10209 14240  4 13:52 pts/0    00:00:00 mysqld --skip-grant-tables --user=mysql
root     10229 14240  0 13:53 pts/0    00:00:00 grep mysql
SZDB:~ # mysql   

[email protected][(none)]> select user,host,password from mysql.user where user='root';
+-------+-----------+-------------------------------------------+
| user  | host      | password                                  |
+-------+-----------+-------------------------------------------+
| root  | %         | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA |
| root  | 127.0.0.1 | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA |
+-------+-----------+-------------------------------------------+

--更新mysql賬戶密碼為NULL或設定為新密碼,注設定為空密碼時可以直接設定,無須使用加密函式,2者等同
[email protected][(none)]> update mysql.user set password='' where user='root';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

[email protected][(none)]> select user,host,password from mysql.user where user='root';
+------+-----------+----------+
| user | host      | password |
+------+-----------+----------+
| root | %         |          |
| root | 127.0.0.1 |          |
+------+-----------+----------+

[email protected][(none)]> exit
Bye

#再次停止mysql資料庫伺服器
SZDB:~ # service mysql stop
Shutting down MySQL.                                                  done
[1]+  Done                    mysqld --skip-grant-tables --user=mysql
SZDB:~ # service mysql start
Starting MySQL..                                                      done
SZDB:~ # mysql            #重啟後再次登陸,不再需要任何密碼

[email protected][(none)]>   

3、小結
a、可以使用set password for
'user_name'@'host_name'=password('new_pwd')方式來修改密碼  #更正@20141031
b、可以使用update系統表方式,update user set password=password('passwd') where user='user_name'
       注: 對於user表password類,如果不用password函式的話,導致更新後無法登陸。
            但如果將賬戶更新為空密碼,可以使用加密函式,也可以不使用,2者等同。
c、也可以在使用者建立後直接使用grant方式來更新使用者密碼。
d、對應root密碼丟失或需要重置root密碼的情形,需要使用系統選項--skip-grant-tables啟動伺服器後進行重置。
e、有關mysql許可權及使用者管理,建立使用者時指定密碼,請參考:MySQL 使用者與許可權管理

鵬城DBA總群

相關推薦

MySQL 修改使用者密碼root密碼

    為資料庫使用者修改密碼是DBA比較常見的工作之一。對於MySQL使用者賬戶的密碼修改,有幾種不同的方式,推薦的方式使用加密函式來修改密碼。本文主要描述了通過幾種不同的方式來修改使用者密碼以及mysql root賬戶密碼丟失(重置root密碼)的處理方法。1、密碼修改的

Linux相關:linux伺服器下安裝MySQL 首次登陸密碼錯誤root密碼

本教程指標MySQL5.7.17版本安裝,其他版本存在差異,未必使用一、      下載mysql5.7我個人下載安裝的是5.7.17版本64位。可以到上面網站下載,或線上下載,輸入命令:wget http://mirrors.sohu.com/mysql/MySQL-5.7

mac使用 homebrew 安裝mysql 後 忘記root密碼root密碼

首先確定自己homebrew 安裝的 mysql 的路徑: 我的是: /usr/local/Cellar/mysql/5.7.22 首先輸入 sudo /usr/local/Cellar/mysql/5.7.22/support-files/my

WDCP管理面板忘記MYSQL ROOT密碼後臺登錄密碼的方法匯總

linux前面的文章中我們已經介紹了WDCP – Linux服務器管理系統,不管出於何種原因,應該會有不少朋友在自己的VPS/服務器上采用WDCP管理面板的時候有忘記MYSQL ROOT賬戶管理密碼,甚至有忘記WDCP後臺管理登錄密碼的情況。今天我們就把這些問題匯總,羅列出解決方法。 強制修改mysql的ro

WDCP管理面板忘記ROOT MYSQL密碼WDCP後臺登入密碼方法

不管出於何種原因,應該有不少的朋友在自己的VPS/伺服器上採用WDCP管理面板的時候有忘記MYSQL ROOT賬戶管理密碼在尋找解決方法,甚至有忘記WDCP後臺管理登入密碼的。這些問題都比較簡單,只需要我們有一個良好的解決思路就可以,當然如果你擔心解決出現問題也可以找老蔣幫助解決。 第一、重置WDCP面板R

WDCP管理面板忘記ROOT MYSQL密碼WDCP後臺登錄密碼方法

我們 部分 mem all 好的 設置 ont 分享 swd 不管出於何種原因,應該有不少的朋友在自己的VPS/服務器上采用WDCP管理面板的時候有忘記MYSQL ROOT賬戶管理密碼在尋找解決方法,甚至有忘記WDCP後臺管理登錄密碼的。這些問題都比較簡單,只需要我們有一個

CentOS root密碼修改密碼

重啟後的Linux出現GRUB引導介面後,然後在按鍵盤山的e 用上下鍵選中你平時啟動的那一項(kernel /vmlinuz 。。。) 然後按e進入編輯,在回車, 然後在按b,引導後進入命令編

Linuxroot密碼機器之間相互登錄

root密碼 相互登錄單用戶模式 系統重啟命令:reboot init 6 shutdown -r now 關機命令: init 0 poweroff 運行級別:0-6 [root@localhost ~]# ls -l /usr/lib/sys

MySQL常用命令、正常登錄數據庫、root密碼

mysql MySQL 重置數據庫密碼 連接mysql數據庫 mysql基本操作 更改mysql數據庫的root密碼 修改root密碼命令為 /usr/local/mysql/bin/mysql -uroot 定義環境變量 臨時定義環境變量 export PATH=$PATH:/usr/l

MySQL root 密碼 - 忘記密碼

原文地址:https://renguangli.com/articles/mysql-reset-root-password 在配置檔案/etc/my.cnf新增配置,重啟mysql ##無密碼登入 skip-grant-tables; 客戶端連線mysql選

mysql ubuntu安裝mysqlroot密碼

ubuntu上安裝mysql非常簡單隻需要幾條命令就可以完成。   1. sudo apt-get install mysql-server     2. apt-get isntall mysql-client  

MySQL 8.0 以上版本 root 使用者密碼

MySQL 8.0 以上版本重置 root 使用者密碼 在 /etc/my.cnf 檔案末尾追加 skip-grant-tables [[email protected] mysql]# vim /etc/my.cnf [mysql] # 設定mysql客戶端預設字符集

mysql root密碼

Stop the MySQL server if it is running. For a server that is running as a Windows service, go to the Services manager: From the Start menu, select Contro

mysqlroot密碼(忘記密碼

關閉許可權驗證 方法一: 執行mysqld_safe --skip-grant-tables & 如果此時不想被遠端連線:mysqld_safe --skip-grant-tables --skip-networking & 方法二: .用命令

MySQLroot密碼的方法

方法一: 在my.ini的[mysqld]欄位加入: skip-grant-tables 重啟mysql服務,這時的mysql不需要密碼即可登入資料庫 然後進入mysql mysql>use mysql; mysql>更新 update user set password

如何在MySQL 8中root密碼

MySQL中的使用者密碼儲存在使用者表中,密碼重置實際上是改變該表中記錄的值。 要在忘記密碼的情況下更改密碼,我們的想法是繞過MySQL的身份驗證進入系統並使用SQL命令更新記錄密碼值。 在MySQL 5中,可以使用--skip-grant-tables選項啟動MySQL服務,此選項將告訴服務在啟動時跳過載

mysql密碼忘記如何root密碼

很久沒有玩資料庫,果然又忘了mysql的root密碼,一頓操作重置,啪啪啪一堆報錯,記錄一下。說明: mysql密碼重置其實是修改資料庫mysql下的user表中密碼欄位。 但是沒有密碼連線都連不上咋

Mac MySQLRoot密碼

申明:本重置密碼可直接對Homebrew安裝的MySQL進行密碼重置,對於其他方式安裝的MySQL需要切換對應的安裝目錄即可。 安裝MySQL後時間太長了會忘記密碼,在這裡總結一下忘記密碼時如

MySQL密碼忘了怎麼辦?MySQLroot密碼方法

MySQL有時候忘記了root密碼是一件傷感的事。這裡提供Windows 和 Linux 下的密碼重置方法。 Windows: 1.以系統管理員身份登陸系統。 2.開啟cmd-----net start 檢視mysql是否啟動。啟動的話就停止net stop mys

CentOS7.0上安裝mysqlroot密碼

本人在CentOS7.0上安裝mysql後,無法通過root進入,因為安裝的時候,並沒有設定root密碼,似乎有個初始隨機密碼,但是不記得了,太麻煩,直接重置root密碼。    使用rpm包安裝完mysql後,按照一下步驟重置root密碼:    啟動mysql: #/e