如何解决mysql本地和远程登录不上的问题
更新:HHH   时间:2023-1-7


本篇文章为大家展示了如何解决mysql本地和远程登录不上的问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

mysql本地登录不上的问题

本地登录不上,即忘记了密码,该如何解决呢?

首先,我们以不检查权限的方式启动mysql,如下:

  1/usr/local/mysql/bin/mysqld --skip-grant-tables &

  然后,就可以直接登录了,如下:

  1 /usr/local/mysql/bin/mysql -u root

  最后,修改密码即可。

  1update 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

上述内容就是如何解决mysql本地和远程登录不上的问题,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注天达云行业资讯频道。

返回数据库教程...