zoukankan      html  css  js  c++  java
  • mysql登录错误:'Access denied for user 'root'@'localhost'

    首先是不知道怎么忽然mysql用命令行,workbench都登录不了,都提示'Access denied for user 'root'@'localhost'。
    数据库卸载重装了几次都不行。好像感觉数据清理不干净。解决的过程遇到的坑,这里记录分享下。

    有效的操作记录下:

    1、首先是跳过权限登录mysql,查看user表,

    停止mysql服务~$ sudo service mysql stop

    以安全模式启动MySQL~$ sudo mysqld_safe --skip-grant-tables

    注意
    可能提示mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exist

    解决方法:(笔者尝试发现必须加sudo)
    sudo mkdir -p /var/run/mysqld

    sudo chown mysql:mysql /var/run/mysqld

    再次执行上面安全模式启动mysql ~$ sudo mysqld_safe --skip-grant-tables &

    这次提示语句显示了,mysqld_safe Staring mysqld deamon with database from /var/lib/mysql

    这次登录可以不用密码:mysql -u root 回车就登录了
    sql语句查询mysql.user表的情况,如下:

    还有人提议如下这么做,没尝试
    Open & Edit /etc/my.cnf or /etc/mysql/my.cnf, depending on your distro.
    Add skip-grant-tables under [mysqld]

    2、发现user的plugin为socket_plugin,改为mysql_native_password

    修改root的plugin权限:

    update mysql.user set authentication_string=PASSWORD('newPwd'), plugin='mysql_native_password' where user='root';

    flush privileges;

    quit;

    (注意这里修改一定要正确,免得跟笔者一样,粗心的把plugin修改的内容少些了一个字母,又有下面的折腾)

    3、user表还有其他用户,root不能登录,用其他的用户登录也行啊。查询了发现一下有效操作:

    在mysql的安装目录,一般在 /etc/mysql里面有个debain.cnf文件,里面有user,password,用这个用了登录,密码最后复制,然后就又可以修改user表root的plugin,操作同上。

    重启mysql服务, sudo service mysql restart;
    用root用户就可以登录。

    参考博客
    MySQL ERROR 1698 (28000) 错误 https://www.cnblogs.com/leolztang/p/5094930.html
    mysql 查看当前使用的配置文件my.cnf的方法 https://blog.csdn.net/fdipzone/article/details/52705507
    linux -- Ubuntu查看修改mysql的登录名和密码、安装phpmyadmin https://www.cnblogs.com/hf8051/p/4775627.html

  • 相关阅读:
    redis导入导出工具redisdump,centos7安装使用
    mysql 锁表情况,处理笔记
    python语言
    pythonhello world
    常用单词
    Django课堂笔记 1
    JS之随机点名系统
    js之简易计算器
    JS之放大镜效果
    SQLServer索引漫谈
  • 原文地址:https://www.cnblogs.com/langxing/p/11904737.html
Copyright © 2011-2022 走看看