• 你好!欢迎你的到来
  • 关于我们
  • 首页 博客 学习笔记 技术导航 工具
  • 博文分类
    • PHP(43)
    • MySQL(11)
    • Linux(28)
    • html(3)
    • JQuery(4)
    • JavaScript(9)
    • svn(2)
    • CSS(2)
    • seajs(1)
    • go(44)
    • redis(1)
    • nginx(8)
    • mongo(0)
    • java(0)
    • 算法(0)
    • 其他(26)
    • 生活(1)
    专栏
    • Jquery基础教程
      • 文章:(15)篇
      • 阅读:33150
    • shell命令
      • 文章:(42)篇
      • 阅读:108095
    • Git教程
      • 文章:(36)篇
      • 阅读:178738
    • leetCode刷题
      • 文章:(76)篇
      • 阅读:63105
    • 摘要视图
    • 目录视图
    解决mysql本地和远程登录不上的问题
    标签: mysql密码
    2018-04-28 16:54 阅读(6684) 评论(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


    本文为原创文章,请尊重辛勤劳动,如需转载,请保留本文地址
    http://www.findme.wang/blog/detail/id/449.html

    若您感觉本站文章不错,读后有收获,不妨赞助一下?

    我要赞助

    您还可以分享给朋友哦

    更多
    顶
    0
    踩
    0
    • 上一篇: PHP的extract和get_defined_vars函数
    • 下一篇: Permissions for '.ssh/id_rsa' are too open报警解决办法
    • 查看评论
    • 正在加载中...
    • 留言
    • 亲,您还没有登录,登录后留言不需要审核哦!
      可以使用如下方式登录哦!
  • CSDN | 新浪微博 | github | 关于我们 | 我要留言 | 友链申请
  • 豫ICP备18038193号    Copyright ©lidequan All Rights Reserved