最近新装了linux mysql,用root用户空秘密登录不上;
用网上的方法,不能解决,后来发现我的user表是空的;
用下面方法解决,方法是在安全模式下插入root用户的秘密和用户名;
[root@localhost ~]#/etc/init.d/mysqld stop;关闭mysql服务
[root@localhost ~]# mysqld_safe --user=mysql --skip-grant-tables
--skip-networking &;开启安全模式
[1] 4871
[root@localhost ~]# mysql -u root mysql ;登录
mysql> select * from user;查询user表
Empty set (0.00 sec)
mysql> show tables
-> ;
+---------------------------+
|
Tables_in_mysql
|
+---------------------------+
|
columns_priv
|
|
db
|
|
event
|
|
func
|
|
general_log
|
|
help_category
|
|
help_keyword
|
|
help_relation
|
|
help_topic
|
|
host
|
|
ndb_binlog_index
|
|
plugin
|
|
proc
|
|
procs_priv
|
|
proxies_priv
|
|
servers
|
|
slow_log
|
|
tables_priv
|
|
time_zone
|
| time_zone_leap_second |
|
time_zone_name
|
| time_zone_transition |
| time_zone_transition_type |
|
user
|
+---------------------------+
24 rows in set (0.00 sec)
mysql> insert into user (Password,User)
values(PASSWORD('123'),'root');
Query OK, 1 row affected, 3 warnings (0.00 sec)
mysql>quit;
然后重启mysql服务就可以mysql -uroot -p123登录了
注意insert into user (Password,User)
values('123','root');是不行的,因为秘密必须用PASSWORD() 函数加密。
这个用户没有任何权限,不能执行任何操作下面在安全模式下,修改权限:
insert into user
values('localhost','root',PASSWORD("123'),'Y','Y','Y','Y','Y','Y','Y','Y',Y','Y','Y','Y','Y','Y','Y','Y',Y','Y','Y','Y','Y','Y','Y','Y',Y','Y','Y','Y','Y',100,100,100,100,100,100,100,100,100,100);
mysql->update user set
Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y'
where User='root';
mysql->update user set Reload_priv ='Y' ,Shutdown_priv
='Y' ,Process_priv ='Y' ,File_priv ='Y' ,Grant_priv ='Y'
,References_priv ='Y' ,Index_priv ='Y' ,Alter_priv ='Y'
,Show_db_priv ='Y' ,Super_priv ='Y' ,Create_tmp_table_priv ='Y'
,Lock_tables_priv ='Y' ,Execute_priv ='Y' ,Repl_slave_priv ='Y'
,Repl_client_priv ='Y' ,Create_view_priv ='Y' ,Show_view_priv ='Y'
,Create_routine_priv ='Y' ,Alter_routine_priv ='Y'
,Create_user_priv ='Y' ,Event_priv ='Y' ,Trigger_priv ='Y'
,Create_tablespace_priv ='Y' where User='root';
执行完毕重新登录就ok了;
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
下面是摘自网上的修改mysql 秘密的方法,方法3条件是初始存在秘密空的root用户:
方法一:
# /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>
方法三:
这种方法我没有进行过测试,因为我的root用户默认密码已经被我修改过了,那位有空测试一下,把结果告诉我,谢谢!
# mysql -uroot -p
Enter password: <输入/etc/mysql/debian.cnf文件中[client]节提供的密码>
至此,困惑多时的问题解决了!
2014-07-13 16:39:15