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 使用者與許可權管理
相關推薦
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,引導後進入命令編
Linux重置root密碼及機器之間相互登錄
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安裝mysql和重置root密碼
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
mysql重置root密碼(忘記密碼)
關閉許可權驗證 方法一: 執行mysqld_safe --skip-grant-tables & 如果此時不想被遠端連線:mysqld_safe --skip-grant-tables --skip-networking & 方法二: .用命令
MySQL重置root密碼的方法
方法一: 在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 MySQL重置Root密碼
申明:本重置密碼可直接對Homebrew安裝的MySQL進行密碼重置,對於其他方式安裝的MySQL需要切換對應的安裝目錄即可。 安裝MySQL後時間太長了會忘記密碼,在這裡總結一下忘記密碼時如
MySQL密碼忘了怎麼辦?MySQL重置root密碼方法
MySQL有時候忘記了root密碼是一件傷感的事。這裡提供Windows 和 Linux 下的密碼重置方法。 Windows: 1.以系統管理員身份登陸系統。 2.開啟cmd-----net start 檢視mysql是否啟動。啟動的話就停止net stop mys
CentOS7.0上安裝mysql重置root密碼
本人在CentOS7.0上安裝mysql後,無法通過root進入,因為安裝的時候,並沒有設定root密碼,似乎有個初始隨機密碼,但是不記得了,太麻煩,直接重置root密碼。 使用rpm包安裝完mysql後,按照一下步驟重置root密碼: 啟動mysql: #/e