新安裝的mysql密碼是空的。
./mysql -u root -p
use mysql
SELECT `Host`,`User` FROM user;
UPDATE user SET `Host` = '%' WHERE `User` = 'root' LIMIT 1;
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%' IDENTIFIED BY 'test' WITH GRANT OPTION;
方法一:
1.關閉mysql
# service mysqld stop
2.屏蔽權限
# mysqld_safe --skip-grant-table
屏幕出現: Starting demo from .....
3.新開起一個終端輸入
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
mysql> FLUSH PRIVILEGES;//記得要這句話,否則如果關閉先前的終端,又會出現原來的錯誤
mysql> \q
方法二
:
mysql> use mysql
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'mysql'
mysql> exit
Bye
[root@testtest ~]# service mysqld stop
Stopping mysqld: [ OK ]
[root@testtest ~]# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
[root@testtest ~]# mysql -u root -p -hlocalhost
Enter password:
mysql> use mysql
mysql> SELECT host,user,password,Grant_priv,Super_priv FROM mysql.user;
mysql> UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> GRANT ALL ON *.* TO 'root'@'localhost';
mysql> GRANT ALL ON *.* TO 'root'@'cn.cn.cn.cn';
mysql> GRANT ALL ON *.* TO 'root'@'245.245.245.245';
mysql> GRANT ALL ON *.* TO 'root'@'127.0.0.1';
mysql> FLUSH PRIVILEGES;
mysql> quit
Bye
[root@testtest ~]# service mysqld start
方法三:
在my.ini的[mysqld]字段加入:
skip-
grant
-tables
重啟mysql服務,這時的mysql不需要密碼即可登錄數據庫
然后進入mysql
mysql>use mysql;
mysql>
update
user
set
password
=
password
(
'新密碼'
)
WHERE
User
=
'root'
;
mysql>flush
privileges
;
運行之后最后去掉my.ini中的skip-grant-tables,重啟mysqld即可。
mysql> use mysql
ERROR 1044 (42000): Access denied
for
user
'root'
@
'localhost'
to
database
'mysql'
mysql> exit
Bye
[root@testtest ~]# service mysqld stop
Stopping mysqld: [ OK ]
[root@testtest ~]# mysqld_safe
--user=mysql --skip-grant-tables --skip-networking &
[root@testtest ~]# mysql -u root -p -hlocalhost
Enter
password
:
mysql> use mysql
mysql>
SELECT
host,
user
,
password
,Grant_priv,Super_priv
FROM
mysql.
user
;
mysql>
UPDATE
mysql.
user
SET
Grant_priv=
'Y'
, Super_priv=
'Y'
WHERE
User
=
'root'
;
mysql> FLUSH
PRIVILEGES
;
mysql>
GRANT
ALL
ON
*.*
TO
'root'
@
'localhost'
;
mysql>
GRANT
ALL
ON
*.*
TO
'root'
@
'cn.cn.cn.cn'
;
mysql>
GRANT
ALL
ON
*.*
TO
'root'
@
'245.245.245.245'
;
mysql>
GRANT
ALL
ON
*.*
TO
'root'
@
'127.0.0.1'
;
mysql> FLUSH
PRIVILEGES
;
mysql> quit
Bye
[root@testtest ~]# service mysqld start