mysql -h localhost和mysql -h 127.0.0.1的区别

今天早上同事说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:   [email protected] 
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:   [email protected] 
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,问题解

[email protected]% 表示所有访问都可以

[email protected] 表示localhost 可以访问

时间: 2024-08-27 19:18:58

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

MySQL 'root'@'localhost'无法登录

今天早上同事说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 mys

MySQL主机127.0.0.1与localhost区别总结

1. mysql -h 127.0.0.1 的时候,使用TCP/IP连接, mysql server 认为该连接来自于127.0.0.1或者是"localhost.localdomain" 2. mysql -h localhost 的时候,是不使用TCP/IP连接的,而使用Unix socket:此时,mysql server则认为该client是来自"localhost" 3. mysql权限管理中的"localhost"有特定含义: 注意:

MySQL刚安装完仅仅认得的主机是:localhost和127.0.0.1

MySQL刚安装完仅仅认得的主机是:localhost和127.0.0.1,假设你要让你机上的IP能够正常登录有两种办法: 一是对你的IP   172.16.1.10   进行授权 grant   privileges   on   dbname.*   to   "user "@ "172.16.1.10   "   identified   by   "password "; 假设仅仅是你自己用的话就能够这样写 grant   all   o

MySQL刚安装完只认得的主机是:localhost和127.0.0.1

MySQL刚安装完只认得的主机是:localhost和127.0.0.1,如果你要让你机上的IP可以正常登录有两种办法: 一是对你的IP   172.16.1.10   进行授权 grant   privileges   on   dbname.*   to   "user "@ "172.16.1.10   "   identified   by   "password "; 如果只是你自己用的话就可以这样写 grant   all   on 

(mysql+php+apache)127.0.0.1和localhost可以连接mysql服务器,而ip却不能

127.0.0.1和localhost可以连接mysql服务器,但是对应的ip却不能,并且报错: Can‘t connect to MySQL server  on  "10.0.73.25"(111) 可能是以下原因: 1.网络不通:ping 10.0.73.25  发现能ping通 ,排除此原因. 2.mysql配置问题:打开mysql的配置文件mysql.cnf(linux下的路径一般为/etc/mysql/mysql.cnf),产看skip-networking和bind_ad

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

在测试mysql的过程中遇到使用localhost可以连接但是127.0.0.1不能连接,原因是localhost使用的本地socket连接,127.0.0.1使用使用的tcp连接 在mysql库的user表中,root账号默认的加密验证方式是auth_socket是,从新使用新的方式生成一下密码加密就可以了 可以更改下用户的加密方式:update user set authentication_string=password("123456"),plugin='mysql_nativ

ERROR 2003 (HY000): Can’t connect to MySQL server on ‘127.0.0.1’ (111) 修复无法连接到MySQL服务器

昨天重新装好Ubuntu然后配置完Django和pycharm后忘了测试mysql,今天配置时遇到了问题: ERROR 2003 (HY000): Can't connect to MySQL server on '(IP地址)' (111) 修复无法连接到MySQL服务器 这是一个链接MySQL的常见问题 下面是处理它的基本步骤. 1.如果数据库服务器是在远程计算机上,然后尝试使用测试客户端-服务器连接ping命令,例如: $ ping server_ip_address Ping主机 一旦有

关于MySQL错误 2005 - Unknown MySQL server host 'localhost' (0) 原因及解决方法

今天在外面开navicat for mysql的时候,怎么也连不上自己本机上的数据库,一直显示2005 - Unknown MySQL server host 'localhost' (0): 错误代码的意思即无法连接上主机localhost.可能是由于没有联网造成的:于是将连接属性里的 '主机名或IP地址' 改成127.0.0.1即回送地址后,就可以连接上了.上百度搜了下,navicat里的一些功能应该是要联网的,而localhost是需要DNS解析后才会是127.0.0.1的,所以才会导致这

MySQL使用主机名(127.0.0.1)连接不了

最近遇到一个问题,连接MySQL的时候主机名用localhost可以,用127.0.0.1则不行.于是乎google了一番,总结下,以做备忘吧. 一. MySQL启动的配置 首先MySQL启动时会加载配置文件,即my.cnf文件.在这个文件中我们可以设置连接数据库的IP限制, 如下图 二.  MySQL验证连接的过程. 我们知道MySQL服务器是通过权限表来控制用户访问的,权限表放置在mysql数据库中,由mysql_install_db脚本初始化.这些MySQL权限表分别user,db,tab