linux下
方法一:
# /etc/init.d/mysql stop
# mysqld_safe --user=mysql
--skip-grant-tables --skip-networking &
# mysql -u root
mysql
mysql> UPDATE user SET Password=PASSWORD('newpassword') where
USER='root';
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysql restart
# mysql -uroot -p
Enter password:
<輸入新設的密碼newpassword>
mysql>
方法二:
直接使用/etc/mysql/debian.cnf文件中[client]節提供的用戶名和密碼:
# mysql
-udebian-sys-maint -p
Enter password: <輸入[client]節的密碼>
mysql>
UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
mysql>
FLUSH PRIVILEGES;
mysql> quit
# mysql -uroot -p
Enter password: <輸入新設的密碼newpassword>
mysql>
方法三:
# mysql -uroot -p
Enter password:
<輸入/etc/mysql/debian.cnf文件中[client]節提供的密碼>
、、、、、、、、、、、、、、、、、、、、、、、
window 下
命令行下輸入:
>cd E:/mysql/bin
>mysqladmin -u root password
你的密碼
>mysql -u root -p
Enter password: 你的密碼
便可以
、、、、、、、、、、、、、、、、、
找到了根本原因,在此涼一下:
導致此問題的根源在:因爲給mysql的root設置了密碼,而不是最初安裝好時的密碼爲空,所以使用
mysqladmin version這樣子不行了,必須這樣子:mysqladmin -uroot -p version,回車後按照提示要求輸入
root密碼即可成功運行命令。
第一種方法其實就是在不知道root密碼的情況下的一種解決辦法,那樣子啓動不用密碼即可進mysql
裏面並進行root密碼的修改,解決忘記了root密碼的問題。
輸入命令“mysqladmin -u root password 你的密碼”作用是修改root用戶的密碼,這條命令能夠不經
提示輸入原密碼而成功執行,也說明了原密碼是空。之後使用修改後的密碼自然能夠成功登錄。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。怎麼更改密碼?
首先要聲明一點,大部分情況下,修改MySQL是需要有mysql裏的root權限的,所以一般用戶無法更改密碼
,除非請求管理員。
方法一
使用phpmyadmin,這是最簡單的了,修改mysql庫的user表,
不過別忘了使用PASSWORD函數。
方法二
使用mysqladmin,這是前面聲明的一個特例。
mysqladmin -u root -p password
mypasswd
輸入這個命令後,需要輸入root的原密碼,然後root的密碼將改爲mypasswd。
把命令裏的root改爲你的用戶名,你就可以改你自己的密碼了。
當然如果你的mysqladmin連接不上mysql
server,或者你沒有辦法執行mysqladmin,
那麼這種方法就是無效的。
而且mysqladmin無法把密碼清空。
下面的方法都在mysql提示符下使用,且必須有mysql的root權限:
方法三
mysql> INSERT INTO mysql.user (Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit'));
mysql> FLUSH
PRIVILEGES
確切地說這是在增加一個用戶,用戶名爲jeffrey,密碼爲biscuit。
在《mysql中文參考手冊》裏有這個例子,所以我也就寫出來了。
注意要使用PASSWORD函數,然後還要使用FLUSH
PRIVILEGES。
方法四
和方法三一樣,只是使用了REPLACE語句
mysql> REPLACE INTO
mysql.user (Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit'));
mysql> FLUSH PRIVILEGES
方法五
使用SET PASSWORD語句,
mysql> SET PASSWORD FOR " = PASSWORD('biscuit');
擬也必須使用PASSWORD()函數,
但是不需要使用FLUSH PRIVILEGES。
方法六
使用GRANT
... IDENTIFIED BY語句
mysql> GRANT USAGE ON *.* TO " IDENTIFIED BY
'biscuit';
這裏PASSWORD()函數是不必要的,也不需要使用FLUSH PRIVILEGES。
注意:
PASSWORD() [不是]以在Unix口令加密的同樣方法施行口令加密。
MySQL 忘記口令的解決辦法
如果 MySQL
正在運行,首先殺之: killall -TERM mysqld。
啓動 MySQL :bin/safe_mysqld
--skip-grant-tables &
就可以不需要密碼就進入 MySQL 了。
然後就是
>use
mysql
>update user set password=password("new_pass") where
user="root";
>flush privileges;
重新殺 MySQL ,用正常方法啓動 MySQL 。