用mysql localhost 权限不能连上mysql,但用127.0.0.1却可以,是什么原因

连接MySQL时,主机名为localhost和127.0.0.1的区别 - 为程序员服务
连接MySQL时,主机名为localhost和127.0.0.1的区别
使用 mysql -u root -p访问MYSQL服务器的时候,如果使用了 -h 参数,mysql 就会通过 TCP/IP 的方式去连接服务器;如果没有 -h 参数,默认会使用 UNIX socket 方式。
如果通过 TCP/IP 方式进来的连接,MYSQL服务器接收到的来源主机是 127.0.0.1;如果是 UNIX socket 方式,MYSQL服务器接收到的来源主机是 localhost。
如果MYSQL服务器开启了 skip_name_resolve,MYSQL服务器就不会把接收到的 IP 地址转化为域名,所以前者的current_user就是 root@&#.0.1′,后者的current_user就是 root@’localhost’。
如果按照MYSQL的默认配置,skip_name_resovle 是OFF,MYSQL服务器就会将 127.0.0.1 转换为 localhost,那么前者和后者两种连接的 current_user 都是 root@’localhost’
Internet Technology
原文地址:, 感谢原作者分享。
您可能感兴趣的代码博客访问: 673546
博文数量: 426
博客积分: 420
博客等级: 准将
技术积分: 4606
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: WINDOWS
&&& 天津一客户用的vista操作系统,安装完软件,mysql数据库一直无法连接,配置文件没错,防火墙端口也没有阻挡。
&&& 后来发现原因是,数据库连接默认没有采用local&socket的方式,而是采用TCP/IP连接,因此必须知道一个实际的IP地址。而软件连接时数据库用的地址是localhost,一般的操作系统会把localhost映射为127.0.0.1,数据库实际连接的时候用的是127.0.0.1。
而查看hosts配置文件时,发现这个vista系统里面把localhost映射为了::1,用::1这个地址是连接不上数据库的。
&&& 解决方法:修改hosts文件即可,修改映射为127.0.0.1 localhost
&&& 具体的映射文件的位置:c:/windows/system32/drivers/etc/hosts这个文件
&&& 后来查资料得知原来::1并不是因为vista的原因,而是因为安装了ipv6协议的原因。卸载了ipv6协议应该也能解决这个问题。只是不确定强行把::1修改为127.0.0.1会不会导致其它的问题。
******************************************************************
附:网上关于vista下无法连接mysql5数据库的说明
阅读(6633) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。用户名:wushank
文章数:248
评论数:13
访问量:304042
注册日期:
阅读量:1297
阅读量:3317
阅读量:441931
阅读量:1128122
51CTO推荐博文
&&&& &&&&&& MYSQL的权限表中存有localhost与127.0.0.1记录,会存在主机名为 localhost 的记录,也存在主机名为 127.0.0.1 的记录,那这两着分别有什么作用呢?1、localhost也叫local ,正确的解释是:本地服务器,localhot(local)是不经网卡传输!这点很重要,它不受网络防火墙和网卡相关的的限制。2、127.0.0.1在windows等系统的正确解释是:本机地址(本机服务器),127.0.0.1是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制。&&&&& 一般设置程序时本地服务用localhost是最好的,localhost不会解析成ip,也不会占用网卡、网络资源 &&&&&& 使用 mysql -u root -p访问MYSQL服务器的时候,如果使用了 -h 参数,mysql 就会通过 TCP/IP 的方式去连接服务器;如果没有 -h 参数,默认会使用 UNIX socket 方式连接服务器,Unix domain socket 的路径名经常变化,通常情况下是:/tmp/mysql.sock。 如果通过 TCP/IP 方式进来的连接,MYSQL服务器接收到的来源主机是 127.0.0.1;如果是 UNIX socket 方式,MYSQL服务器接收到的来源主机是 localhost。要强制使用TCP/IP连接到本地服务器,那就使用IP地址 127.0.0.1 而不是主机名localhost。 &&&&& 如果MYSQL服务器开启了 skip_name_resolve,MYSQL服务器就不会把接收到的 IP 地址转化为域名,所以前者的current_user就是 root@’127.0.0.1’,后者的current_user就是 root@’localhost’。&&&&& 如果按照MYSQL的默认配置,skip_name_resovle 是OFF,MYSQL服务器就会将 127.0.0.1 转换为 localhost,那么前者和后者两种连接的 current_user 都是 root@’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”& & & 当mysql解析这个127.0.0.1的时候,他会把他当成localhost来使,当连接数据库进行认证的时候,他会从上至下遍历,找到第一条满足条件的host和user数据,然后返回进行密码校验。&&&&&& 注:127.0.0.1和localhost设置不同的密码,因为localhost的记录在127.0.0.1之前,所以,127.0.0.1的密码是没用的。&&&&&&&&&&&&& 要想让127.0.0.1的密码有用,有二种方法:&&&&&&&&&&&&&&& 1、将127.0.0.1和localhost的记录互换;&&&&&&&&&&&&&&& 2、开启skip_name_resovle
了这篇文章
类别:┆阅读(0)┆评论(0)用localhost不能连上mysql,但用127.0.0.1却可以,是什么原因?【已经解决】 - 知乎13被浏览12052分享邀请回答22 条评论分享收藏感谢收起3添加评论分享收藏感谢收起查看更多回答用localhost不能连上mysql,但用127.0.0.1却可以,是什么原因?【已经解决】
我的图书馆
用localhost不能连上mysql,但用127.0.0.1却可以,是什么原因?【已经解决】
【苏伟华的回答(1票)】:localhost 是走 socket 127.0.0.1 是走 3306端口 确保 my.cnf 里这俩的设置是ok的 还有就是看看是不是防火墙拦住了。【逸凡的回答(0票)】:走IP了,肯定走网络了,这个端口不允许外网访问或者网络不通。【何龙的回答(0票)】:linux下,mysql的localhost默认是指unix socket,看看mysql的配置文件,在mysqld那一部分你的mysqld打开的unix socket放在哪里,一般是/tmp/mysql.sock之类的,再看看mysql(客户端)默认是去哪儿找unix socket(看看/etc/mysql.conf的配置,mysql那一部分中默认unix socket的路径,实在不行对mysqld用lsof,对mysql用strace看看丫的究竟open调用打开哪个文件去了),这两个如果对不上,那就连不上。127.0.0.1对mysql来说指的是tcp socket,一般没问题。【mysqlops的回答(0票)】:原因:使用mysql -uroot -p 或 mysql-uroot -p -h localhost 会默认去读/var/lib/mysql/**.socket 文件,肯定找不到的,因为你编译之后指定的目录为: /usr/local/mysql解决办法:mysql -uroot -p --socket=//usr/local/mysql/***.socket (注释:默认应该是 mysql.socket)另外一种解决办法:在/etc/hosts中做映射 localhost 和127.0.0.1之间做一下...【石平的回答(0票)】:mysql:cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/var/mysqldata -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_USER=mysql原文地址:
馆藏&66673
TA的推荐TA的最新馆藏
喜欢该文的人也喜欢

我要回帖

更多关于 mysql连不上localhost 的文章

 

随机推荐