-
博文分类专栏
- Jquery基础教程
-
- 文章:(15)篇
- 阅读:40787
- shell命令
-
- 文章:(42)篇
- 阅读:134042
- Git教程
-
- 文章:(36)篇
- 阅读:212672
- leetCode刷题
-
- 文章:(76)篇
- 阅读:95477
-
解决mysql本地和远程登录不上的问题2018-04-28 16:54 阅读(7766) 评论(0)
一、mysql本地登录不上的问题
本地登录不上,即忘记了密码,该如何解决呢?
首先,我们以不检查权限的方式启动mysql,如下:
/usr/local/mysql/bin/mysqld --skip-grant-tables &
然后,就可以直接登录了,如下:
/usr/local/mysql/bin/mysql -u root
最后,修改密码即可。
update user set authentication_string=PASSWORD('dequan') where User='root';
注意:在mysql5.7以及更高版本,使用authentication_string字段代替了Password字段。
二、mysql远程登录不上的问题
针对以检查权限的方式启动的mysql,客户端在以某用户来登录mysql时,mysql服务端会检验该用户以及该用户所在的ip是否有操作的权限。mysql可以基于用户ip、数据库、表、操作类型等维度来进行授权操作,授权的方式有修改mysql库里面的user表、执行mysql授权语句等。
1、基于修改user表来进行授权操作
如果某个ip登录不上,即在User表中没有对该ip进行授权。首先,我们看一些user表中的一些字段
Host: 127.0.0.1 User: root Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y Create_priv: Y Drop_priv: Y 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 ssl_type: ssl_cipher: x509_issuer: x509_subject: max_questions: 0 max_updates: 0 max_connections: 0 max_user_connections: 0 plugin: mysql_native_password authentication_string: *89E04A681364F578C8E900403166C192A1E8E2B6 password_expired: N password_last_changed: 2017-08-04 10:27:44 password_lifetime: NULL account_locked: N
其中,Host为允许登录的主机名或是ip(如果为%,则代表任意ip或是主机),User登录用户,authentication_string为登录密码,*_priv为响应功能的权限,比如Select_priv为读的权限,Insert_priv写入的权限,Update_priv更新的权限,Delete_priv删除的权限。
所以,如果要允许root在某个远程主机ip1上面登录,则需要,改变对应登录用户的Host字段即可:
update user set host = 'ip1' where user = 'root'; //或者 update user set host = '%' where user = 'root';
最后更新一下权限即可
FLUSH RIVILEGES
2、基于mysql授权语句来进行授权操作
当然,mysql也提供了相应的授权语句,如下:
grant all privileges on db.table to 'user'@'host' identified by '密码' with grant option;
all privileges 代表授予所有的权限,当然我们也可以仅仅授予某些权限。最后在更新一下权限,即可
FLUSH RIVILEGES