设为首页 收藏本站
查看: 1038|回复: 0

[经验分享] 连接Mysql提示Can’t connect to local MySQL server through socket的解决方法

[复制链接]

尚未签到

发表于 2018-9-29 09:41:50 | 显示全部楼层 |阅读模式
  mysql,Mysqldump,Mysqladmin,php连接mysql服务常会提示下面错误:
  1
  ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  这是由于修改mysql服务的了socket文件mysql.sock位置,而导致无法通过mysql socket文件连接到mysql服务引起的,具体解决办法如下:
  1、查看mysql服务的socket文件位置:
  mysql socket文件的位置是在/etc/my.cnf中设置的,cat /etc/my.cnf内容如下:
  1
  2
  3
  4
  [mysqld]
  datadir=/storage/db/mysql
  socket=/storage/db/mysql/mysql.sock
  user=mysql
  其中socket等于的路径就是socket文件的位置,我们只要修改my.cnf文件,告诉mysql,mysqldump,mysqladmin mysql服务的socket位置在哪里就可以。
  2、修改my.cnf文件:
  在/etc/my.cnf文件中添加如下内容,并重启mysqls服务,即可解决mysql,mysqldump,mysqladmin的“Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'”问题:
  1
  2
  3
  4
  5
  6
  7
  8
  9
  10
  11
  12
  [mysqld]
  datadir=/storage/db/mysql
  socket=/storage/db/mysql/mysql.sock
  [mysql]
  socket=/storage/db/mysql/mysql.sock
  [mysqldump]
  socket=/storage/db/mysql/mysql.sock
  [mysqladmin]
  socket=/storage/db/mysql/mysql.sock
  3、php连接mysql服务提示"Can't connect to local MySQL server through socket..."的解决方法
  有时候mysql服务正常运行,用户名密码也完全正确,使用php的mysql_connect函数却连接不了mysql,调用php的mysql_error()函数提示“Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'”,这是我们需要修改/etc/php.ini文件。
  在/etc/php.ini文件中"[MySQL]"项下找到"mysql.default_socket",并设置其值指向正确的mysql服务socket文件即可,如:
  1
  2
  3
  [MySQL]
  ...省略n行...
  mysql.default_socket = "/storage/db/mysql/mysql.sock"
  4、python连接mysql提示"Can't connect to local MySQL server through socket..."的解决方法:
  在连接mysql数据库函数中指定socket文件,如下:
  1
  2
  3
  4
  5
  6
  7
  8
  #!/usr/bin/python
  from MySQLdb import connect
  conn = connect(db="pzy", user="root", host="localhost", unix_socket="/storage/db/mysql/mysql.sock")
  cur = conn.cursor()
  count=cur.execute("show databases")
  print 'there has %s dbs' % count
  conn.commit()
  conn.close()
  5. php pdo连接mysql提示"Can't connect to local MySQL server through socket..."的解决方法:
  同样在连接字符串添加mysql socket文件的位置即可,如下:
  1
  2
  3
  4
  5
  6
  7
  8
  
  报同样错误,其他可能原因:
  1.查看mysql是否启动
  #/usr/local/mysql/suported-files/mysql.server status
  or #/etc/init.d/mysqld status
  or #systemctl status mysqld.service
  or #service mysqld status
  如果mysql在运行,则kill或者stop
  2.如果mysql能够启动,>mysql进入时报错,则:
  #mysql -uroot -S /data/mysql/mysql.sock 测试socket文件是不是在那个位置,如果能够进入,则就是最上面的解决方法。
  3.权限原因,很可能是没有权限在指定路径下创建 mysql.sock文件
  #chown -R mysql.mysql /usr/local/mysql
  #chown -R mysql.mysql /data/mysql
  有些时候需要:chown -R root.root /usr/local/mysql,其他程序才能调用mysql,不报这个错误。
  服务器正常启动时,会自动创建 mysql.sock文件


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-603601-1-1.html 上篇帖子: mysql主主互备+原来mysql主从架构 下篇帖子: mysql常用操作命令, mysql脚本优化工具使用说明
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表