directory消除措施,socket的消除方式

mysql,mysqldump,Mysqladmin,php连接mysql服务常会提示下边错误:

一般来说所示,PHP连接MySQL报错:

mysql,Mysqldump,Mysqladmin,php连接mysql劳动常会提示上面错误:

后天用pdo连接mysql境遇三个意外的题材,host设为12柒.0.0.一方可绵亘不绝成功,设为localhost就会报如下的不当:

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket
‘/var/lib/mysql/mysql.sock’ (2)

SQLSTATE[HY000] [2002] Can’t connect to local MySQL server through
socket ‘MySQL’ (2)

 

  1. PHP Fatal error:  Uncaught exception ‘PDOException’ with message ‘SQLSTATE[HY000] [2002] No such file or directory’ in /usr/share/nginx/html/test.php:2  
  2. Stack trace:  
  3. #0 /usr/share/nginx/html/test.php(2): PDO->__construct(‘mysql:host=loca…’, ‘root’, ‘aaaaaa’)  
  4. #1 {main}  
  5.   thrown in /usr/share/nginx/html/test.php on line 2  

当使用host参数为“localhost”连接Mysql服务时,会先行利用“sock文件”举办连接,而不是应用“IP:端口”举行接二连三,而Mysql尝试选取“sock文件”举办连接时,却力不从心赢得“sock文件”的地点。
 
要化解此错误,有三种缓解方法:

测试代码如下:

1
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

先是反馈是mysql:user表中(user=user一,host=localhost)的那条记下没有密码,可是查了之后发现并不是,而且密码和(user=user一,host=%)的密码1致,排除密码的题材,今后还剩余2个地方便是host。那么用localhost连接MySQL和127.0.0.一有啥样界别吧?在我们印象中那八个都能够访问到本地的劳动,可是精神上有何分别的?

  • 将接二连三参数“host”的值由“localhost”改成“127.0.0.一”;
  • 美高梅开户网址,按上边方法,在“/etc/mysql.cnf”中钦点“sock文件”地方。

<?php
try
{
 $dsn = ‘mysql:dbname=php-note;host=localhost;port=3306;charset=utf8’;
 $username = ‘root’;
 $password = ‘root’;
 new PDO( $dsn, $username, $password);
}
catch (\PDOException $e)
{
 echo $e->getMessage();
}

 

host=1二柒.0.0.1,使用 TCP连接,mysql
server会认为那几个再三再四来自1二七.0.0.1以此IP可能localhost.localdomin这一个域名。

 

【消除方案】

那是出于修改mysql服务的了socket文件mysql.sock地方,而导致不可能通过mysql
socket文件接二连三到mysql服务引起的,具体化解办法如下:
壹、查看mysql服务的socket文件地方:
mysql socket文件的岗位是在/etc/my.cnf中装置的,cat /etc/my.cnf内容如下:

host=localhost,不使用TCP连接,它使用Unix socket连接mysql服务

一、查看mysql服务的socket文件地点:
  mysql socket文件的职位是在/etc/my.cnf中装置的,cat
/etc/my.cnf内容如下:

把 host=localhost 改为 host=127.0.0.1 即可!
 
 
连日来Mysql提醒Can’t connect to local MySQL server through
socket的消除情势
 
mysql,Mysqldump,Mysqladmin,php连接mysql服务常会提醒上面错误:
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服务引起的,具体解决办法如下:

 

如上是那二种host连接区其他粗略总括(更详实的笔者会再独自整理壹篇出来)。知道了这么些不一样,那么难题来了,当php用localhost去老是mysql的时候,它该用哪个socket呢?我们都驾驭mysql服务运行后它的长河里有贰个–socket=/var/lib/mysql/mysql.sock的参数(我们的地址和自身的大概会不一样等,那几个能够在mysq.cnf中展开安装),个中这一个mysql.sock就是要用到的socket,大家只要把这几个欧洲经济共同体地址告诉php就能够,告诉的措施就是修改php.ini

[mysqld]
datadir=/storage/db/mysql
socket=/storage/db/mysql/mysql.sock
user=mysql

一、查看mysql服务的socket文件地点:

1
2
3
4
[mysqld]
datadir=/storage/db/mysql
socket=/storage/db/mysql/mysql.sock
user=mysql
  1. pdo_mysql.default_socket=  

 

mysql socket文件的职分是在/etc/my.cnf中安装的,cat
/etc/my.cnf内容如下:
[mysqld]
datadir=/storage/db/mysql
socket=/storage/db/mysql/mysql.sock
user=mysql
内部socket等于的门路便是socket文件的职分,大家只要修改my.cnf文件,告诉mysql,mysqldump,mysqladmin
mysql服务的socket地方在哪儿就足以。

内部socket等于的路径就是socket文件的岗位,大家假使修改my.cnf文件,告诉mysql,mysqldump,mysqladmin mysql服务的socket地点在哪个地方就足以。

设置好之后重启php-fpm就马到成功了。

中间socket等于的门路正是socket文件的职责,大家尽管修改my.cnf文件,告诉mysql,mysqldump,mysqladmin等mysql服务的socket地点在哪里就足以。

2、修改my.cnf文件:

2、修改my.cnf文件:
在/etc/my.cnf文件中添加如下内容,同仁一视启mysqls服务,即可缓解mysql,mysqldump,mysqladmin的“Can’t
connect to local MySQL server through socket
‘/var/lib/mysql/mysql.sock’”问题:

缓解格局总计:

 

在/etc/my.cnf文件中添加如下内容,同等对待启mysqls服务,即可缓解mysql,mysqldump,mysqladmin的“Can’t
connect to local MySQL server through socket
‘/var/lib/mysql/mysql.sock’”难题:
[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

 

一.查看mysql库下边包车型客车user表中,user=用户名,host=localhost的那条记下密码是或不是和user=用户名,host=12七.0.0.壹那条记下的密码是或不是1致,差别的改个密码再试试

2、修改my.cnf文件:
在/etc/my.cnf文件中添加如下内容,一视同仁启mysqls服务,即可化解mysql,mysqldump,mysqladmin的“Can’t
connect to local MySQL server through socket
‘/var/lib/mysql/mysql.sock’”难题:

directory消除措施,socket的消除方式。三、php连接mysql服务提醒”Can’t connect to local MySQL server through
socket…”的化解措施

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

2.看看php.ini中pdo_mysql.default_socket那项是还是不是有安排也许配备是还是不是科学。

[mysqld]
datadir=/storage/db/mysql
socket=/storage/db/mysql/mysql.sock

有时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文件即可,如:
[MySQL]
…省略n行…
mysql.default_socket = “/storage/db/mysql/mysql.sock”

 

 

[mysql]
socket=/storage/db/mysql/mysql.sock

四、python连接mysql提醒”Can’t connect to local MySQL server through
socket…”的化解办法:

三、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处的小说:

[client]
socket=/storage/db/mysql/mysql.sock

在连接mysql数据库函数中钦命socket文件,如下:
#!/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()

 

前些天总是mysql数据库的时候蒙受多个题材:Can’t connect to local MySQL
server through socket ‘/tmp/mysql.sock’ (2)

[mysqldump]
socket=/storage/db/mysql/mysql.sock

5、php pdo连接mysql提醒”Can’t connect to local MySQL server through
socket…”的消除措施:

1
2
3
[MySQL]
…省略n行…
mysql.default_socket = "/storage/db/mysql/mysql.sock"

参照网上有关的情势,包涵:()

[mysqladmin]
socket=/storage/db/mysql/mysql.sock

1样在再而三字符串添加mysql socket文件的义务即可,如下:
<?php
$dsn =
“mysql:host=localhost;dbname=pzy;unix_socket=/storage/db/mysql/mysql.sock”;
$db = new PDO($dsn, ‘root’, ”);
$rs = $db->query(“SELECT * FROM qrtest”);
while($row = $rs->fetch()){
    print_r($row);
}
?>

 

方案1.
 1.#ps -A|grep mysql 
   展现类似:
  1829 ?        00:00:00 mysqld_safe
   1876 ?        00:00:31 mysqld
  2.#kill -9 1829
  3.#kill -9 1876
  4.#/etc/init.d/mysql restart
  5.#mysql -u root -p
   他的分神化解了,我的还没化解!
继续找
方案2 
先查看 /etc/rc.d/init.d/mysqld status 看看m y s q l 是不是已经起步.

三、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文件即可,如:

四、python连接mysql提醒”Can’t connect to local MySQL server through
socket…”的化解方法:
在一连mysql数据库函数中钦定socket文件,如下:

别的看看是或不是权力难点.

[root@localhost beinan]#chown -R mysql:mysql /var/lib/mysql
[root@localhost beinan]# /etc/init.d/mysqld start
启动 MySQL: [ 确定 ]
[root@localhost lib]# mysqladmin -uroot password ‘123456’
[root@localhost lib]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or /g.
Your MySQL connection id is 3 to server version: 4.1.11

Type ‘help;’ or ‘/h’ for help. Type ‘/c’ to clear the buffe
他的也消除了,小编的分神还在后续,照旧三番7回搜寻
方案3 
标题一挥而就了,竟然是max_connections=一千他说太多了,然后改成500也说多,无奈删之难题解决了。
也许拾贰分
方案4
     /var/lib/mysql 全体文件权限 改成mysql.mysql
     不佳如故倒霉
 
方案5
     摘要:消除不能够透过mysql .sock连接MySQL难点这一个标题至关主要提醒是,不能够由此 ‘/tmp/mysql
.sock’连到服务器,而php标准配置就是用过’/tmp/mysql .sock’,但是部分mysql
安装方式 将 mysql .sock放在/var/lib/mysql
.sock恐怕别的的何地,你能够透过修改/etc/my.cnf文件来校勘它,打开文件,能够看看如下的东东: 
   [mysql d] 
  socket=/var/lib/mysql .sock 
  改一下就好了,但也会唤起别的的题材,如mysql
程序连不上了,再加一点: 
  [mysql ] 
  socket=/tmp/mysql .sock 
  只怕还是能够通过改动php.ini中的配置来使php用别的的mysql
.sock来连,这几个我们自身去找找
  
  恐怕用这么的主意:
  ln -s /var/lib/mysql /mysql .sock /tmp/mysql .sock

成功了,便是那般ln -s /var/lib/mysql /mysql .sock /tmp/mysql .sock

OK!

但小编的种类中从不找到mysql.sock文件,只有mysqld.sock文件,/var/run/mysqld/mysqld.sock

于是乎效仿上边的做法: ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

这么,能够通常连接数据库了

再附一篇相关作品:()

 mysql_real_connect()试图建立到运维host的一个MySQL数据库引擎的八个老是。其函数原形为:

MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned int client_flag)   

  
笔者要编一段程序用来远程连接三个mysql数据库。笔者在数据库的本机上做试验,发现mysql_real_connect()的第一个参数设为”localhost”时能够平常连接,当改写为该机器的IP地址”192.16八.十0.二”时就总是失利。作者在程序中写的原句为:

mysql_real_connect(mysql,”192.168.100.2″,”root”,””,”mydns”,0,NULL,0)。

 

  
最初,小编以为将”localhost”改为”1九二.16八.拾0.二”之后要将第多个参数端口号写上,但照旧13分。由于笔者是在Linux上做的,所以想只怕供给将第四个参数unix_socket写上,结果要么不行。于是到google找消除方法,发现要远程连接mysql须要为mysql的钦赐帐号设置远程连接的权柄。在自己的程序中,就要为root设置那壹权力。事实表明,笔者前边接连退步便是由于那一个原因造成的。但难题是,网上被大面积转贴的不二等秘书诀是谬误的,作者照做后还百般,最终问了校友才消除的。下边作者具体说一下,望我们不会再被误导。

 

   在mysql数据库中有一个mysql库,它里面包括二个user表,里面存有所有帐号及它们的权限及特点。对应本身的user表中找到User项为root的,发现有两项,其Host项分别为localhost和localhost.localdomain。小编们只要求把’localhost’改为’%’就足以让具有长途机器以root帐号登陆mysql服务器。也得以将’localhost’改为某二个ip地址,那样就足以在该地方的机器上登6mysql服务器。那个都未曾难点,只是网上被广为传布的3个转移Host项的主意是不对的。他的诀如若用update语句将钦点User项的Host项改过来,假设想添加二个新的用于远程访问的帐号,就用insert语句添加。事实是那根本不行,小编遵照作了,表是变了,但要么连不上。后来因而询问才驾驭,要想改,结合本人的动静,必须用下边的那条语句:

     grant all privileges on mydns.* to ‘root’@’%’;

来改变root帐号的权限。假使添加新帐号也是那般。想必那一个表相比特殊,用普通的SQL语句不可能操作。假如帐号有密码,前面再加上identified
by ‘***'(*为您帐号的密码)就能够了。

 

   为了化解这一个标题用了一中午的光阴,费了过多坎坷,写出来也能让大家少走些弯路。

其二种作品:

mysql,mysqldump,mysqldump,php连接mysql服务常会提示上面错误:

 

 

1
ERROR 2002 (HY000): Can&#039;t connect to local MySQL server through socket &#039;/var/lib/mysql/mysql.sock&#039; (2)

 

产生此难点的缘故一般有三个:

一、mysql服务未符合规律运行:

出于mysql的socket文件是由mysqld服务运转时创制的,假诺mysqld服务未平常运营,socket文件自然也不会被创建,当然会找不到socket文件了。对于判断mysql服务是还是不是运营,大家能够利用上边发号施令:

 

 

1
2
3
4
5
6
7
8
# 1、 端口是否打开
[root@aiezu.com ~]# lsof -i:3306
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  12207 mysql   14u  IPv4  52350      0t0  TCP *:mysql (LISTEN)
 
# 2、mysqld服务是否正在运行
[root@aiezu.com ~]# service mysqld status
mysqld (pid  4717) is running…

 

二、socket文件路径在安排文件中安装不完整:

这相似是出于大家修改了mysql配置“/etc/my.cnf”引起的。比如大家修改了布署文件中“[mysql]”选项下的“socket”参数,而未内定“[client]”、“[mysql]”选项的“socket”参数,导致mysql使用默许的socket文件地点去搜寻socket文件,从而导致未找到socket文件而引发此错误。

 

[MySQL]
…省略n行…
mysql.default_socket = “/storage/db/mysql/mysql.sock”

 

化解办法:

上面是消除格局,更详实的牵线可以参考:

一、mysql服务未平常运作:

倘假使劳务未运维,我们运转“service mysqld
start”运转服务即可。要是服务运转不了,就去查看mysql服务日志,寻找原因并解决再开发银行

 

 

1
2
3
4
5
6
7
[root@aiezu.com ~]# service mysqld start
Starting mysqld:                                           [  OK  ]
[root@aiezu.com ~]# lsof -i:3306
COMMAND   PID  USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
mysqld  14109 mysql   10u  IPv4 247183583      0t0  TCP *:mysql (LISTEN)
[root@aiezu.com ~]# service mysqld status
mysqld (pid  14109) is running…

 

贰、完善mysql配置文件:

壹旦承认mysql服务不荒谬运作,还提醒小说题指标此错误,那正是“/etc/my.cnf”配置文件的标题了。消除办法是修改“/etc/my.cnf”配置文件,在安顿文件中丰硕“[client]”选项和“[mysql]”选项,并运用那四个挑选下的“socket”参数值,与“[mysqld]”选项下的“socket”参数值,指向的socket文件路径完全壹致。如下:

 

 

1
2
3
4
5
6
7
8
9
10
11
12
[mysqld]
datadir=/storage/db/mysql
socket=/storage/db/mysql/mysql.sock
…省略n行(爱E族)…
 
[client]
default-character-set=utf8
socket=/storage/db/mysql/mysql.sock
 
[mysql]
default-character-set=utf8
socket=/storage/db/mysql/mysql.sock

 

其间socket等于的门道就是socket文件的职位,大家如若修改my.cnf文件,告诉mysql,mysqldump,mysqladmin等一声令下,mysql服务的socket文件地点在何地,然后重启mysqld服务即可。

 

三、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"

 

四、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 &#039;there has %s dbs&#039; % count
conn.commit()
conn.close()

 

五. php pdo连接mysql提示”Can’t connect to local MySQL server through
socket…”的缓解格局:

同等在接连字符串添加mysql socket文件的岗位即可,如下:

 

1
2
3
4
5
6
7
8
<?php
$dsn = "mysql:host=localhost;dbname=pzy;unix_socket=/storage/db/mysql/mysql.sock";
$db = new PDO($dsn, &#039;root&#039;, &#039;&#039;);
$rs = $db->query("SELECT * FROM qrtest");
while($row = $rs->fetch()){
    print_r($row);
}
?>

四、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()

#!/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()

 

  1. php pdo连接mysql提醒”Can’t connect to local MySQL server through
    socket…”的缓解格局:
      同样在连接字符串添加mysql socket文件的岗位即可,如下:
  1. php pdo连接mysql提醒”Can’t connect to local MySQL server through
    socket…”的缓解办法:
    同壹在连续字符串添加mysql socket文件的职责即可,如下:

<?php
$dsn =
“mysql:host=localhost;dbname=pzy;unix_socket=/storage/db/mysql/mysql.sock”;
$db = new PDO($dsn, ‘root’, ”);
$rs = $db->query(“SELECT * FROM qrtest”);
while($row = $rs->fetch()){
print_r($row);
}
?>

 

1
2
3
4
5
6
7
8
<?php
$dsn = "mysql:host=localhost;dbname=pzy;unix_socket=/storage/db/mysql/mysql.sock";
$db = new PDO($dsn, ‘root’, ”);
$rs = $db->query("SELECT * FROM qrtest");
while($row = $rs->fetch()){
    print_r($row);
}
?>

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图