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,table_priv,columns_priv和host。下面分别介绍一下这些表的结构和内容:

    user权限表:             记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。

    db权限表:                记录各个帐号在各个数据库上的操作权限。

    table_priv权限表:     记录数据表级的操作权限。

    columns_priv权限表:记录数据列级的操作权限。

    host权限表:             配合db权限表对给定主机上数据库级操作权限作更细致的控制。这个权限表不受GRANT和REVOKE语句的影响。

    那连接数据库的存取过程是怎样的呢:

    1. 先从user表中的host、 user、 password这3个字段中判断连接的主机名、用户名、密码是否存在表中,存在则通过身份验证;

    2. 第一步通过后才会进行数据库、表、列等权限的查询和分配。

  三. 分析

    那127.0.0.1连接不上数据库就可能是以下三种原因:

    1. my.cnf 文件中做了IP限制,一般会报这样的错误

      SQLSTATE[HY000] [2002] Connection refused

    2. user 权限表127的主机名不存在,一般抛错是

      SQLSTATE[HY000] [1130] Host ‘xx.xx.xx.xx’ is not allowed to connect to this MySQL server

    3. 用户名密码填写错误,一般抛错是

      ERROR 1045 (28000): Access denied for user ‘root‘@‘127.0.0.1‘ (using password: YES)

  四. 杂项

    1. 主机名为localhost 是通过 UNIX socket 连接数据库的, 主机名为IP则是通过TCP/IP连接的。直接上图

    

    

时间: 2024-10-14 06:06:46

MySQL使用主机名(127.0.0.1)连接不了的相关文章

使用正确的主机名访问https,提示连接不安全

问题现象:用申请的域名访问提示证书错误(访问者电脑上不了外网). 解决办法: 将颁发下来的交叉等证书内容复制追加到mail_test_cn.crt文件里面,最后配置在nginx里面. 原文地址:http://blog.51cto.com/net881004/2153561

主机名/etc/hosts文件的作用

1,/etc/hosts,主机名ip配置文件. # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1       localhost.localdomain   localhost ::1     localhost6.localdomain6 localhost6 hosts---The static table look

Linux重命名主机名

一.查看Linux主机名 [root @localhost ~]# hostname localhost.localdomain 二.重命名主机名(以hadoop1为新主机名为例) 第一步: [root @localhost ~]# hostname hadoop1 第二步:修改 /etc/sysconfig/network  配置文件,以便下次重启的时,使用新的主机名 编辑 /etc/sysconfig/network 文件,修改 HOSTNAME=hadoop1 第三步:修改本机的域名解析文

Linux下设置ip和主机名进行绑定

1:输入命令gedit   /etc/hosts 这样你就打开了一个文本,然后在文本的末尾进行添加如下: ip地址                主机名 192.168.0.125       hadoop 保存退出. Linux下设置ip和主机名进行绑定,布布扣,bubuko.com

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主机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   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

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主机 一旦有