1.例如你的 root用戶現在沒有密碼,你希望的密碼修改為123456,那麼命令是:
mysqladmin -u root password 123456
2.如果你的root現在有密碼了(123456),那麼修改密碼為abcdef的命令是:
mysqladmin -u root -p password abcdef
注意,命令回車後會問你舊密碼,輸入舊密碼123456之後命令完成,密碼修改成功。
3.如果你的root現在有密碼了(123456),那麼修改密碼為abcdef的命令是:
mysqladmin -u root -p123456 password abcdef (注意-p 不要和後面的密碼分
開寫,要寫在一起,不然會出錯,錯誤如下所示)
4.使用phpmyadmin,這是最簡單的了,修改mysql庫的user表,
不過別忘了使用PASSWORD函數。
忘記密碼:
下面我們提供了6種不同的修改mysql root用戶的密碼,與增加mysql用戶的方法。
方法一:
使用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 jeffrey@"%" = PASSWORD('biscuit');
擬也必須使用PASSWORD()函數,
但是不需要使用FLUSH PRIVILEGES。
方法六:
使用GRANT ... IDENTIFIED BY語句
mysql> GRANT USAGE ON *.* TO jeffrey@"%" 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 。
其它辦法:
辦法一: 在linux下忘記mysql的密碼,咋整?有一種方法可以很快的重設密碼。
首先,關閉mysql.
這個時候你用Mysqladmin shutdown來關閉mysql基本是不可能的,為啥,因為你不知到密碼了么,用其它用戶去連接mysql庫,會提示你沒有許可權。
其次,直接用kill命令也是不行的。mysqld_safe啟動以後,如果mysqld被kill掉,這個進程會自動重啟,真是坑爹啊!
那麼,只能使出絕招了
killall -TERM mysqld
第二步,到root用戶下(或者是mysql服務的安裝用戶下)繞開安全許可權啟動mysqld
/usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
第三步,修改Mysql庫中的user表,重新賦予新的許可權
>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;
注意,這步會把所有user=root的賬戶密碼都設為這個,可以在where里加入針對性的限定條件
第四步,重新kill掉mysqld,然後重啟,一切ok
辦法二:
1.首先確認伺服器出於安全的狀態,也就是沒有人能夠任意地連接MySQL資料庫。
因為在重新設置MySQL的root密碼的期間,MySQL資料庫完全出於沒有密碼保護的 狀態下,其他的用戶也可以任意地登錄和修改MySQL的信息。可以採用將MySQL對外的埠封閉,並且停止Apache以及所有的用戶進程的方法實現伺服器的准安全狀態。最安全的狀態是到伺服器的Console上面操作,並且拔掉網線。
2.修改MySQL的登錄設置:
# vi /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables
例如:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-grant-tables
保存並且退出vi。
3.重新啟動mysqld
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
4.登錄並修改MySQL的root密碼
# /usr/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 3.23.56
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> USE mysql ;
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 ( 'new-password' ) WHERE User = 'root' ;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 2 Changed: 0 Warnings: 0
mysql> flush privileges ;
Query OK, 0 rows affected (0.01 sec)
mysql> quit
Bye
5.將MySQL的登錄設置修改回來
# vi /etc/my.cnf
將剛才在[mysqld]的段中加上的skip-grant-tables刪除
保存並且退出vi。
6.重新啟動mysqld
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]