问题描述:

系统安装mysql的过程中,没有提示配置用户名和密码相关的信息,安装完毕后,登录报错。

表现现象为:

mysql -u root -p

[输入root密码]

界面提示:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

问题解决过程:

1. 首先尝试了通过绕开数据库权限校验的流程,直接进入数据库后再重新配置用户名和密码

sudo /etc/init.d/mysql stop

sudo mysqld_safe --skip-grant-tables

mysql -u root 尝试登录,

没有作用,还是会提示无权限访问数据库

2. 绕开权限校验行不通,原因无法定位,进一步想通过重新安装数据库的方法解决,

主要是怀疑上次安装中有部分系统原来自带的用户残留信息或配置导致目前的问题,所以重装前,先卸载和清除原有安装。

sudo apt-get remove mysql-*

dpkg –l | grep ^rc | awk ‘{print $2}’ | xargs dpkg –P

sudo apt-get install mysql-client mysql-server

安装过程中发现,还是没有提示配置用户或者登录密码信息,“不详的预感”……

果然,登录发现还是不行,再次提示Access denied 。

3. 用“mysql安装不提示配置密码”去检索类似问题,发现另一个方法,找到了mysql的默认登录信息。

/etc/mysql/debian.cnf中,使用黄色框中的登录信息即可登录。

4. 登录mysql后,分析存储登录信息的user表,分析下为何root之前登录失败。

use mysql

show tables;

select host,user,authentication_string,plugin from user;

不难看出,root这个用户的密码串为空,校验plugin方式为“auth_socket”,查阅mysql官方文档(https://dev.mysql.com/doc/refman/5.7/en/socket-pluggable-authentication.html#socket-pluggable-authentication-usage),

对 auth_socket 校验方式的说明如下:

auth_socket方式下,client端通过socket方式访问mysql,server端通过socket file的方式校验,对client端的username进行校验即可,也就是说,这种方式不是本地密码登录使用的。

因此,将该方式修改为“mysql_native_password”,并配置root的登录密码,即可使用root用户本地密码的方式进行mysql访问。

mysql Access denied for user 'root'@'localhost'问题解决的更多相关文章

  1. mysql Access denied for user root@localhost错误解决方法总结(转)

    mysql Access denied for user root@localhost错误解决方法总结(转) mysql Access denied for user \'root\'@\'local ...

  2. MySQL Access denied for user root@localhost 解决方法

    今天把本地开发的项目(ThinkPHP 3.2.3)移到虚拟机上(CentOS 6.6,LNMP 1.2,MySQL 5.6.23),配置好 MySQL 之后访问首页,出现: 此时 MySQL 的用户 ...

  3. 解决mysql“Access denied for user 'root'@'localhost'”

    解决mysql“Access denied for user 'root'@'localhost'” 分类: linux 2011-01-14 00:23 147547人阅读 评论(3) 收藏 举报 ...

  4. mysql Access denied for user \'root\'@\'localhost\'”解决办法总结,下面我们对常见的出现的一些错误代码进行分析并给出解决办法,有需要的朋友可参考一下。

    mysql Access denied for user \'root\'@\'localhost\'”解决办法总结,下面我们对常见的出现的一些错误代码进行分析并给出解决办法,有需要的朋友可参考一下. ...

  5. MySql Access denied for user 'root'@'localhost' (using password:YES) 解决方案

    关于昨天下午说的MySQL服务无法启动的问题,解决之后没有进入数据库,就直接关闭了电脑. 今早打开电脑,开始-运行 输入"mysql -uroot -pmyadmin"后出现以下错 ...

  6. mysql Access denied for user root @localhost (using password:YES)错误

    C:\AppServ\MySQL> mysql -u root -p Enter password:  ERROR 1045 (28000): Access denied for user 'r ...

  7. mysql Access denied for user root@localhost错误解决方法总结

    原文:http://www.111cn.net/database/mysql/44142.htm Access denied for user 'root'@'localhost' (using pa ...

  8. mysql—Access denied for user 'root'@'localhost' (using password:NO)

    安装mysql未设置初始密码,登录提示Access denied for user 'root'@'localhost' (using password:NO): 解决方案:  sudo /etc/i ...

  9. ubuntu mysql Access denied for user root@localhost

    解决办法: 1. vim mysqld.cnf  路径:/etc/mysql/mysql.conf.d 在[mysqld]下添加skip-grant-tables 2. 重启mysql服务 servi ...

随机推荐

  1. ThinkPHP:create()方法有什么用呢?

    1.create方法可以对POST提交的数据进行处理(通过表中的字段名称与表单提交的名称对应关系自动封装数据实例),例如user表中有一个字段名叫"username",如果表单中有 ...

  2. parameter server

    http://zeromq.org ZeroMQ \zero-em-queue\, \ØMQ\: Ø  Connect your code in any language, on any platfo ...

  3. 前端jQuery之事件流

    1.事件流概念 描述的是从页面中接收事件的顺序 包含事件捕获阶段,处于目标阶段,事件冒泡阶段 2.绑定事件 语法 bind(type,data,fn) 示例:每个标签被点击的时候,弹出其文本 $(&q ...

  4. this指向问题(1)

    在JS中,this一般有四种绑定的方式,但是在确定到底是哪种绑定之前必须先找到函数的调用位置.接下来先介绍其中的三种: 1.默认绑定 其实所谓的默认绑定就是函数直接调用(前面没有什么东西来点它),在默 ...

  5. Django 单元测试

    mock 测试 mock 是辅助单元测试的模块,用于测试不方便调用的别人的接口.举个简单的例子,比如说,我们测试django 写的微信登录接口,正常流程下,我们需要前端拉起授权窗口,获取jscode或 ...

  6. NodeJS基础入门

    1.前端最主流的JavaScript运行环境 1>Node.js是一个基于Chrome V8引擎的JavaScript运行环境. 2>Node.js使用了一个事件驱动.非阻塞式I/O的模型 ...

  7. C#基础-hashtable,泛型和字典集合

    hashtable 的存储方式 使用方法: 1.引入包含Hashtable的命名空间 using System.Collections; // 引入Hash所在的命名空间 2.往hash表里面添加数据 ...

  8. Cloudera Manager 安装 CDH5

    文档说明 本文是针对Linux CentOS6服务器与CDH5.15的安装手册. 关于CDH和ClouderaManager CDH(Cloudera's Distribution, includin ...

  9. Linux中的代码编辑器vim

    Vim的三种工作模式 命令行模式 插入模式 底行模式 Vim 的命令行模式 命令行模式是进入vim后的初始模式,在该模式下主要是使用方向键来移动光标的位置,并通过相应的命令来进行文字的编辑. 切换方法 ...

  10. python__标准库 : 测试代码运行时间(timeit)

    用 timeit.Timer.timeit() 方法来测试代码的运行时间: from timeit import Timer def t1(): li = [] ): li.append(i) def ...