2014-07-13 16:39:15
来 源
中存储网
MySQL
最近新装了linux mysql,用root用户空秘密登录不上;用网上的方法,不能解决,后来发现我的user表是空的;用下面方法解决,方法是在安全模式下插入root用户的秘密和用户名;[root@localhost ~]#/etc/init.d/mysqld
最近新装了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]节提供的密码>
至此困惑多时的问题解决了!

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。