ubuntu mysql 2002_ubuntu mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socke...

今天在安装mysql时遇到主要问题:

在mysql-client用如下命令连接mysql server时

zhaohui@localhost:/usr/local/mysql$ mysql -h localhost -u root -p

报错

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'(2)

用127.0.0.1连接时正常

mysql -h 127.0.0.1 -u root -p

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 7

最后的解决思路:

1 首先查看mysql server是否启动

hui@localhost:/usr/local/mysql$ netstat -apn | grepmysql

(并非所有进程都能被检测到,所有非本用户的进程信息将不会显示,如果想看到所有信息,则必须切换到 root 用户)

tcp0 0 127.0.0.1:45179 127.0.0.1:3306 ESTABLISHED 12344/mysql

unix2 [ ACC ] 流 LISTENING 84169 - /tmp/mysql.sock

zhaohui@localhost:/usr/local/mysql$ sudo netstat -apn | grepmysql

[sudo] password forzhaohui:

tcp0 0 127.0.0.1:45179 127.0.0.1:3306 ESTABLISHED 12344/mysql

tcp60 0 :::3306 :::* LISTEN 12301/mysqld

tcp60 0 127.0.0.1:3306 127.0.0.1:45179 ESTABLISHED 12301/mysqld

unix2 [ ACC ] 流 LISTENING 84169 12301/mysqld /tmp/mysql.sock

2 由于在本机设置过hostname,可以查看,之前为ThinkPad,经过修改/etc/hostname之后(修改为localhost),仍然无效,问题依旧

zhaohui@localhost:/usr/local/mysql$ hostnamelocalhost

3 仔细看报错内容,从网上查到,是由于mysql-client 和server都需要socket,而mysql-client的socket从/var/run/mysqld/ysqld.sock中读取(由报错可 知),与server端不一致。mysql-client的参数可以按照一个顺序读取,第一个即/etc/my.cnf,如果都没有,则按照默认,也可以 新建一个文件进行设置。

mysql --help | grepmy.cnf

order of preference, my.cnf, $MYSQL_TCP_PORT,

/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

server端是/tmp/mysql.sock ,可以利用bin/mysqladmin中查看

zhaohui@localhost:/usr/local/mysql$ bin/mysqladmin variables | grepsock

| performance_schema_max_socket_classes | 10 |

| performance_schema_max_socket_instances | 322 |

| socket | /tmp/mysql.sock

两者冲突,网上有一种解决方法是建立一个软连接,大家反馈感觉不太好,主要是server端的/tmp可能会被系统干掉。

4 最终采用如下解决方法(来源)

mysql主机填写localhost与非localhost有不同的地方

当主机填写为localhost时mysql会采用 unix domain socket连接

当主机填写为127.0.0.1时mysql会采用tcp方式连接

这是linux套接字网络的特性,win平台不会有这个问题,因此在/etc/my.cnf中的[mysql]中添加

[mysql]

protocol=tcp

启动mysql,搞定!

zhaohui@localhost:/usr/local/mysql$ mysql -h localhost

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 1

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值