不重啟Mysql修正root暗碼的辦法。本站提示廣大學習愛好者:(不重啟Mysql修正root暗碼的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是不重啟Mysql修正root暗碼的辦法正文
1、普通忘卻暗碼的處理方法,須要重啟Mysql
1、skip-grant-tables
我們經常使用的辦法是應用skip-grant-tables選項,mysqld server啟動以後其實不應用權限體系(privilege system)。用戶不須要任何賬號、不受任何限制的拜訪數據庫中一切數據。為了平安起見,平日加上 skip-networking ,mysqld不偵聽憑何TCP/IP銜接要求。操作進程以下,
1)修正my.cnf設置裝備擺設文件,在mysqld選項中添加skip-grant-tables和skip-networking。
2)再重啟mysqld server。
3)經由過程sql語句修正mysql.user表中存儲暗碼。履行flush privileges,從新啟用mysql權限體系。
UPDATE mysql.USER SET Password=PASSWORD('newpwd')WHERE User='root';
FLUSH PRIVILEGES;
4)刪除或許正文設置裝備擺設文件中skip-grant-tables和skip-networking的參數選項。假如應用skip-networking,則須要再次重啟mysqld。由於skip-networking不是體系變量,只是mysqld的參數選項,而不克不及經由過程體系變量靜態停止設置。假如沒有實用skip-networking,只須要履行flush privileges便可以使權限體系從新失效。
2. --init-file
mysqld_safe可使–init-file參數選項來履行從新設定暗碼的sql語句。
1)新建一個初始化文件,如/tmp/initfile,文件內容為下面修正暗碼的sql語句。
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
FLUSH PRIVILEGES;
2)封閉mysqld辦事過程。
3)應用mysqld_safe啟動mysqld;
mysqld_safe --init-file=/home/me/mysql-init &
下面的兩種辦法是在忘卻root暗碼情形下從新設置暗碼的辦法,可以發明都須要重啟mysqld辦事。許多人都是應用第一種停止重置root暗碼,然則比擬推舉的做法反而是第二種,即平安有快捷簡略。
2、不重啟mysqld的辦法
1、起首得有一個可以具有修正權限的mysql數據庫賬號,以後的mysql實例賬號(較低權限的賬號,好比可以修正test數據庫)或許其他雷同版本實例的賬號。把data/mysql目次上面的user表相干的文件復制到data/test目次上面。
[root@localhost mysql]# cp mysql/user.* test/
[root@localhost mysql]# chown mysql.mysql test/user.*
2、應用另外一個較低權限的賬號鏈接數據庫,設置test數據庫中的user存儲的暗碼數據。
[root@localhost mysql]# mysql -utest -p12345
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 5.5.25a-log Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update user set password=password('yayun') where user='root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 5 Changed: 0 Warnings: 0
mysql>
3、把修正後的user.MYD和user.MYI復制到mysql目次下,記得備份之前的文件。
mv mysql/user.MYD mysql/user.MYD.bak
mv mysql/user.MYI mysql/user.MYI.bak
cp test/user.MY* mysql/
chown mysql.mysql mysql/user.*
4、查找mysql過程號,而且發送SIGHUP旌旗燈號,從新加載權限表。
[root@localhost mysql]# pgrep -n mysql
2184
[root@localhost mysql]#
[root@localhost mysql]# kill -SIGHUP 2184
5、上岸測試
[root@localhost mysql]# mysql -uroot -pyayun
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 5.5.25a-log Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>