今天早上同事说MySQL root账号登录不上了。我试了一下 
#mysql -u root -p 
提示”Access denied for user ‘root’@’localhost’ (using password: YES)”

因为年后有同事离职,我第一反应是谁修改了root密码?按照忘记root密码来重置一下密码: 
#/etc/init.d/mysql stop 
#mysqld_safe –skip-grant-tables & 
#mysql -uroot -p 
mysql>update mysql.user set password=password(‘mypassword’) where user=’root’; 
mysql>flush privileges; 
mysql>quit

用新密码还是无法登录,提示跟上面一样。换一个非root账号登录,查看一下user表: 
mysql> select user,host from user; 
+———–+———+ 
| user   | host | 
+———–+———+ 
| root  | 127.0.0.1 | 
| night | % | 
+———–+———+

怀疑默认的localhost没有映射到127.0.0.1?试试#mysql -u root -p xxxx -h 127.0.0.1,果然可以登录。 
之前配置数据库的同学没有给’root’@’localhost’和’root’@’ip’授权。 
grant all privileges on . to ‘root’@’localhost’ identified by ‘mypassword’ with grant option; 
grant all privileges on . to ‘root’@’118.192.91.xxx’ identified by ‘mypassword’ with grant option;

再查询一下用户表: 
 
然后#mysql -u root -p xxxx,登录成功!

查了一下mysql -h localhost和mysql -h 127.0.0.1的区别,通过localhost连接到mysql是使用UNIX socket,而通过127.0.0.1连接到mysql是使用TCP/IP。看看状态: 
mysql -h localhost > status 
Connection id:     639 
Current database: mysql 
Current user:   root@localhost 
SSL:           Not in use 
Current pager: stdout 
Using outfile:        ” 
Using delimiter:    ; 
Server version:     5.6.15-log Source distribution 
Protocol version: 10 
Connection:    Localhost via UNIX socket

mysql -h 127.0.0.1 > status 
Connection id:     640 
Current database: mysql 
Current user:   root@localhost 
SSL:           Not in use 
Current pager: stdout 
Using outfile:        ” 
Using delimiter:    ; 
Server version:     5.6.15-log Source distribution 
Protocol version: 10 
Connection:   127.0.0.1 via TCP/IP

解决方法
在my.cnf的[mysql]区段里添加

protocol=tcp

保存重启MySQL,问题解

root@% 表示所有访问都可以

root@localhost 表示localhost 可以访问

mysql -h localhost和mysql -h 127.0.0.1的区别的更多相关文章

  1. 【MySQL】Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

      [MySQL]Linux下MySQL 5.5.5.6和5.7的RPM.二进制和源码安装 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后, ...

  2. MySQL主机127.0.0.1与localhost区别总结

    1. mysql -h 127.0.0.1 的时候,使用TCP/IP连接, mysql server 认为该连接来自于127.0.0.1或者是"localhost.localdomain&q ...

  3. MySQL 127.0.0.1和localhost本质区别

    登录方式: [root@10-4-14-168 ~]# mysql -uroot -p Enter password: 查看权限表 mysql> SELECT user,host,passwor ...

  4. mysql开启skip-name-resolve 导致root@127.0.0.1(localhost)访问引发的ERROR 1045 (28000)错误解决方案

    为什么配置skip-name-resolve? 由于mysql -h${ip} 远程访问速度过慢, mysql -uroot -p123456 根据网友经验(https://www.cnblogs.c ...

  5. linux7可以通过远程和localhost访问mysql,但是127.0.0.1不能访问

    网上搜索的其他方法都试过,不行 比如设置权限,开放端口,配置数据库... 最好偶然一个搜索查看可能原因是防火墙端口问题: vim /etc/sysconfig/iptables 在文件中添加下面语句 ...

  6. [日常] 解决mysql localhost可以连接但是127.0.0.1不能连接

    在测试mysql的过程中遇到使用localhost可以连接但是127.0.0.1不能连接,原因是localhost使用的本地socket连接,127.0.0.1使用使用的tcp连接 在mysql库的u ...

  7. mysql部署后无法远程连接的原因(错误代码10061),服务监听127.0.0.1和0.0.0.0的区别

    在Ubuntu上部署mysql服务并添加了一个非root用户后,发现无法远程连接, Navicat连接mysql出现2003——can't connect to mysql server on loc ...

  8. ERROR 1130 (HY000): Host '127.0.0.1' is not allowed to connect to this MySQL server

    [root@zstedu mysql]# mysql --protocol=tcp -h 127.0.0.1 -uroot -pEnter password: ERROR 1130 (HY000): ...

  9. Cannot create JDBC driver of class '' for connect URL 'jdbc:mysql://127.0.0.1:3306/test'

    原来的配置如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http ...

随机推荐

  1. Bootstrap的使用。。。

    概览 深入了解 Bootstrap 底层结构的关键部分,包括我们让 web 开发变得更好.更快.更强壮的最佳实践. HTML5 文档类型 Bootstrap 使用到的某些 HTML 元素和 CSS 属 ...

  2. 庆祝团队合著的《自主实现SDN虚拟网络与企业私有云》终于得以出版 --- 本人负责分布式存储部分的编写

    https://item.jd.com/12154254.html 京东购买地址

  3. MySQL-事务特性

    1. 事务概念引入: 现实生活中,我们往往经常会进行转账操作,转账操作可以分为两部分来完成,转入和转出.只有这两部分都完成了才可以认为是转账成功.在数据库中,这个过程是使用两条语句来完成的,如果其中任 ...

  4. Linux 基础——权限管理命令chown、chgrp

    一.chown命令与chgrp命令的作用 有时你需要改变文件或目录的属主,比如有人离职或开发人员创建了一个在测试或生产环境中需要归属在系统账户下的应用.Linux提供了两个命令来实现这个功能:chow ...

  5. 洛谷P1720 月落乌啼算钱 题解

    题目传送门 初看题目,好难.再看一次,探索规律,发现这就是有名的斐波那契数列. F[i]=f[i-1]+f[i-2] SO 代码很简单,貌似要开long long,又貌似不用开. #include&l ...

  6. 仿微信小红圈消息提示App消息红圆点提示

    代码: <div class="wrap"> <div class="img"></div> <div class=& ...

  7. python定制类(1):__getitem__和slice切片

    python定制类(1):__getitem__和slice切片 1.__getitem__的简单用法: 当一个类中定义了__getitem__方法,那么它的实例对象便拥有了通过下标来索引的能力. c ...

  8. mysql中行转列与列传行的问题

    行转列: 使用cross join 的方式 使用case-when的方式 列转行: SELECT user_name, REPLACE ( substring_index(mobile, ',', a ...

  9. Unity3D 向量运算

    写在前面的话,前两天有个朋友在QQ上问我 如何获取主角面朝方向一定区域中的敌人对象.这个命题看似简单,其实里面蕴含了很多数学方面的东西.今天刚好有时间我就彻底的把这个疑问写在博客中.希望可以帮助到他. ...

  10. js基本数据类型 BigInt 和 Number 的区别

    今天在做LeetCode的一到 “加一” 的题,题目如下 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除 ...