การเชื่อมต่อ MySQL ไม่ทำงาน: 2002 ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว


106

ฉันกำลังพยายามตั้งค่า WordPress ฉันใช้ Apache และ MySQL และบัญชีและฐานข้อมูลได้รับการตั้งค่าทั้งหมดแล้ว ฉันพยายามทำการเชื่อมต่ออย่างง่าย:

<?php
    $conn = mysql_connect('localhost', 'USER', 'PASSWORD');
    if(!$conn) {
        echo 'Error: ' . mysql_errno() . ' - ' . mysql_error();
    }
?>

และฉันมักจะได้รับสิ่งนี้:

ข้อผิดพลาด: 2002 - ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว

ไฟล์หรือไดเร็กทอรีใดที่สามารถพูดถึงได้

ฉันใช้ OS X Snow Leopard โดยใช้ Apache ในตัว ฉันติดตั้ง MySQL โดยใช้ x86_64 dmg

UPDATE: ฉันพบว่าซ็อกเก็ตอยู่ที่ /tmp/mysql.sock ดังนั้นใน php.ini ฉันจึงแทนที่การเกิดขึ้นทั้งหมดของเส้นทางที่ไม่ถูกต้องด้วยสิ่งนั้น


2
กรุณาวางผลลัพธ์/etc/init.d/mysql startว่าคุณอยู่ใน distro ฐานเดเบียน หากล้มเหลวให้ตรวจสอบ/etc/my.cnfไฟล์เพื่อหาเส้นทางไฟล์ซ็อกเก็ต mysql ที่ถูกต้อง
ก.ย.

4
แก้ไขปัญหาเดียวกันบน OS X ด้วย XAMPP โดยใช้ "127.0.0.1" แทน "localhost"
Giuseppe Urso

คำตอบ:


97

หากคุณใช้ Linux: พา ธ ไปยังไฟล์ mysql.sock ไม่ถูกต้อง โดยปกติจะเป็นเพราะคุณใช้ (LAMPP) XAMPP และไม่ได้อยู่ใน /tmp/mysql.sock

เปิดไฟล์ php.ini แล้วค้นหาบรรทัดนี้:

mysql.default_socket

และทำให้มัน

mysql.default_socket = /path/to/mysql.sock

5
หากคุณไม่แน่ใจให้ลอง /var/lib/mysql/mysql.sock เป็นพา ธ ใหม่ไปยังซ็อกเก็ต
เจย์

1
อืม. บางทีอาจหมายถึงเสือดาวหรือเสือ ไม่ว่าในกรณีใดขอให้สนุกกับ WordPress!
Alec Gorge

3
โปรดทราบว่าคุณอาจต้องตั้งค่า mysqli.default_socket = /path/to/mysql.sock หากเชื่อมต่อกับ mysqli
razzed

2
ตำแหน่งซ็อกเก็ตเริ่มต้นสำหรับการติดตั้ง MySQL หุ้นคือ /tmp/mysql.sock
Jonathon Hill

4
"ชื่อโฮสต์ localhost มีความหมายพิเศษมันถูกผูกไว้กับการใช้ซ็อกเก็ตของโดเมน Unix ไม่สามารถเปิดการเชื่อมต่อ TCP / IP โดยใช้ชื่อโฮสต์ localhost ได้คุณต้องใช้ 127.0.0.1 แทน" - php.net/manual/en/mysqli.quickstart.connections.php โดยพื้นฐานแล้วมีบางอย่างไม่ทำงานกับการเชื่อมต่อกับซ็อกเก็ตโดเมน Unix ที่อนุญาตให้localhostทำงานและ TCP / IP ทำงานได้ดังนั้นการเปลี่ยนเป็นที่อยู่ TCP / IP 127.0.0.1จะใช้งานได้
เอ็ดเวิร์ด

154

ฉันมีปัญหาที่คล้ายกันและสามารถแก้ไขได้โดยการระบุ mysql ด้วย127.0.0.1แทนlocalhost.

นี่อาจหมายความว่าฉันมีบางอย่างผิดปกติในการตั้งค่าโฮสต์ของฉัน แต่การแก้ไขด่วนนี้ทำให้ฉันต้องดำเนินการในตอนนี้


2
คุณเพิ่งช่วยฉันเวลาอันมีค่า
uchamp

2
ฉันจะตรวจสอบไฟล์โฮสต์ของฉันและพบเส้นด้วยcode127.0.0.1 codelocalhost ซึ่งทำให้ฉันสงสัยว่าทำไมการเชื่อมต่อผ่าน localhost ไม่ทำงาน ถ้ามีใครให้ความกระจ่างฉันก็จะมีความสุข
ola

2
เนื่องจาก mysql.default_socket ใน php.ini ไม่ถูกต้อง เรียกใช้ "php -i | grep mysql.default_socket"
Jonah

1
สิ่งนี้ใช้ได้ผลสำหรับฉันฉันใช้ el Capitan w / mysql 5.7 ที่ติดตั้งผ่าน homebrew ฉันกำลังลองติดตั้ง WP และเมื่อฉันเปลี่ยน "localhost" เป็น "127.0.0.1" มันก็สามารถเชื่อมต่อได้
dgig

5
"ชื่อโฮสต์ localhost มีความหมายพิเศษมันถูกผูกไว้กับการใช้ซ็อกเก็ตของโดเมน Unix ไม่สามารถเปิดการเชื่อมต่อ TCP / IP โดยใช้ชื่อโฮสต์ localhost ได้คุณต้องใช้ 127.0.0.1 แทน" - php.net/manual/en/mysqli.quickstart.connections.php โดยพื้นฐานแล้วมีบางอย่างไม่ทำงานกับการเชื่อมต่อกับซ็อกเก็ตโดเมน Unix ที่อนุญาตให้localhostทำงานและ TCP / IP ทำงานได้ดังนั้นการเปลี่ยนเป็นที่อยู่ TCP / IP 127.0.0.1จะใช้งานได้
เอ็ดเวิร์ด

39

นี้สำหรับMac OS Xที่มีการติดตั้งพื้นเมืองของ Apache HTTPและการติดตั้งที่กำหนดเองของ MySQL

คำตอบนั้นขึ้นอยู่กับการตอบสนองที่ยอดเยี่ยมของ @ alec-gorge แต่เนื่องจากฉันต้อง google การเปลี่ยนแปลงบางอย่างเพื่อกำหนดค่าในการกำหนดค่าของฉันส่วนใหญ่เป็น MacOS X เฉพาะฉันคิดว่าฉันจะเพิ่มที่นี่เพื่อความสมบูรณ์

เปิดใช้งานการสนับสนุน PHP5 สำหรับ Apache HTTP

ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานการรองรับ PHP5 ใน/etc/apache2/httpd.conf.

แก้ไขไฟล์ด้วยsudo vi /etc/apache2/httpd.conf(ป้อนรหัสผ่านเมื่อถูกถาม) และ uncomment (ลบออก;จากจุดเริ่มต้นของ) บรรทัดเพื่อโหลดโมดูลphp5_module

LoadModule php5_module libexec/apache2/libphp5.so

เริ่มต้น Apache HTTP ด้วยsudo apachectl start(หรือrestartหากเริ่มต้นแล้วและต้องเริ่มต้นใหม่เพื่ออ่านไฟล์การกำหนดค่าอีกครั้ง)

ตรวจสอบให้แน่ใจว่า/var/log/apache2/error_logมีบรรทัดที่แจ้งให้คุณทราบว่า php5_module เปิดใช้งานอยู่คุณจะเห็นPHP/5.3.15(หรือคล้ายกัน)

[notice] Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 with Suhosin-Patch configured -- resuming normal operations

ค้นหาชื่อไฟล์ Socket

เมื่อ MySQL เปิดใช้งาน (ด้วย./bin/mysqld_safe) ควรมีบรรทัดการดีบักที่พิมพ์ออกมาในคอนโซลเพื่อบอกคุณว่าคุณสามารถค้นหาไฟล์บันทึกได้จากที่ใด จดชื่อโฮสต์ในชื่อไฟล์ - localhostในกรณีของฉัน - ซึ่งอาจแตกต่างไปจากการกำหนดค่าของคุณ

ไฟล์ที่ตามมาLogging toมีความสำคัญ นั่นคือที่ที่ MySQL บันทึกการทำงาน

130309 12:17:59 mysqld_safe Logging to '/Users/jacek/apps/mysql/data/localhost.err'.
130309 12:17:59 mysqld_safe Starting mysqld daemon with databases from /Users/jacek/apps/mysql/data

เปิดlocalhost.errไฟล์ (อีกครั้งคุณอาจมีชื่อแตกต่างกัน) เช่นtail -1 /Users/jacek/apps/mysql/data/localhost.errค้นหาชื่อไฟล์ซ็อกเก็ต - ควรเป็นบรรทัดสุดท้าย

$ tail -1 /Users/jacek/apps/mysql/data/localhost.err
Version: '5.5.27'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)

หมายเหตุsocket:ส่วนหนึ่ง - php.iniที่ไฟล์ซ็อกเก็ตที่คุณควรใช้ใน

มีอีกวิธีหนึ่ง (บางคนบอกว่าเป็นวิธีที่ง่ายกว่า) ในการกำหนดตำแหน่งของชื่อไฟล์ของซ็อกเก็ตโดยเข้าสู่ระบบ MySQL และเรียกใช้:

show variables like '%socket%';

การกำหนดค่า PHP5 ด้วยการสนับสนุน MySQL - /etc/php.ini

พูดถึง php.ini ...

ใน/etcไดเร็กทอรีมีไฟล์/etc/php.ini.default คัดลอกไป/etc/php.ini

sudo cp /etc/php.ini.default /etc/php.ini

เปิด/etc/php.iniและมองหาmysql.default_socket

sudo vi /etc/php.ini

ค่าเริ่มต้นของการมีmysql.default_socket /var/mysql/mysql.sockคุณควรเปลี่ยนเป็นค่าที่คุณได้ระบุไว้ก่อนหน้านี้ - /tmp/mysql.sockในกรณีของฉัน

แทนที่/etc/php.iniไฟล์เพื่อแสดงชื่อไฟล์ซ็อกเก็ต:

mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock

การตรวจสอบขั้นสุดท้าย

รีสตาร์ท Apache HTTP

sudo apachectl restart 

ตรวจสอบบันทึกหากไม่มีข้อผิดพลาดเกี่ยวกับ PHP5 ไม่มีข้อผิดพลาดหมายความว่าคุณทำเสร็จแล้วและ PHP5 กับ MySQL ควรทำงานได้ดี ยินดีด้วย!


คำตอบนี้ช่วยได้
Vigneshwaran

คำตอบนี้คืออึ ไม่มีส่วนเกี่ยวข้องกับคำถามที่ถูกถามและโดยพื้นฐานแล้วเป็นเพียงการสอนแอมป์ am (acos) ซึ่งถ้าดี - จะยิ่งเสียมากขึ้นหากวางไว้ที่นี่และไม่ใช่ที่ที่ผู้คนค้นหาการตั้งค่าแอมป์สแต็ก macos กำลังมองหา เกี่ยวกับคำถามที่ถูกถาม: คำตอบนี้ไม่ได้อธิบายว่าทำไมข้อผิดพลาดจึงเกิดขึ้นและเหตุใด php จึงพยายามเชื่อมต่อผ่านซ็อกเก็ตแทนที่จะเป็นชื่อโฮสต์แทนแม้ว่าจะถูกส่งไปmysql_connectซึ่งเป็นปัญหาที่แท้จริงของคำถามเดิมไม่ใช่เรื่องทั่วไป ความเข้าใจผิดในการติดตั้งซอฟต์แวร์
ohcibi

@ohcibi ฉันเขียนว่า"ฉันคิดว่าฉันจะเพิ่มที่นี่เพื่อความสมบูรณ์" และคิดว่ามันเพียงพอแล้ว (และได้รับการโหวตเพิ่มขึ้นไม่กี่คนที่ชอบ) ฉันชอบความคิดของคุณในการหาคำตอบให้ง่ายขึ้น แต่ไม่รู้จะทำอย่างไร คุณช่วยแบ่งปันความคิดของคุณและช่วยฉัน ... อีกครั้งได้ไหม ขอบคุณ!
Jacek Laskowski

@JacekLaskowski โดยทั่วไป: เขียนบล็อกโพสต์และแสดงความคิดเห็นลิงก์ไปยังคำตอบที่ได้รับการยอมรับ / โหวตมากที่สุดด้วยความตั้งใจเดียวกันกับที่คุณมีที่นี่ ("เพิ่มเพื่อความสมบูรณ์") แต่ในกระทู้นี้ฉันไม่เห็นเหตุผลที่จะโพสต์ลิงก์นั้น สหกรณ์กล่าวว่าเขาใช้ MacOS แต่ปัญหานี้มีอะไรที่ทุกคนจะทำอย่างไรกับระบบปฏิบัติการใด ๆ แต่มี mySQL'sway localhostของการตีความ ไม่มีใครที่ต้องการความช่วยเหลือในการตั้งค่า xamp บน macos จะมาที่นี่ได้โดย googling ดังนั้นฉันจึงใช้คำว่า 'อึ' เธรดนี้ไม่มีส่วนเกี่ยวข้องกับ macos เลย แต่ใช้กับ mysql เท่านั้น (ไม่ใช่แม้แต่ php)
ohcibi

14

การเปลี่ยน 'localhost' เป็น '127.0.0.1' ในไฟล์ config (การเชื่อมต่อ db) ช่วยได้!


1
แต่ทำไมถึงควรช่วย?
Enamul Hassan

"การเปลี่ยน 'localhost' เป็น '127.0.0.1'” หรือ 127.0.0.1 เป็นที่อยู่เซิร์ฟเวอร์ MySQL จริงเช่น u55151.mysql.someserver.eu
user2812532

13

การรีสตาร์ทเซิร์ฟเวอร์ mysql อาจช่วยได้ ในกรณีของฉันการรีสตาร์ทเซิร์ฟเวอร์ช่วยประหยัดเวลาได้มาก

service mysql restart

PS- ใช้sudo service mysql restartสำหรับผู้ใช้ที่ไม่ใช่รูท


2
มันยอดเยี่ยมมากเมื่อวิธีง่ายๆใช้งานได้จริง
อาบน้ำ

10

ขั้นแรกตรวจสอบให้แน่ใจว่า MySQL ทำงานอยู่ คำสั่ง: mysqld start

หากคุณยังไม่สามารถเชื่อมต่อได้: /etc/my.cnf ของคุณมีลักษณะอย่างไร? (หรือ /etc/msyql/my.cnf)

อีก 2 โพสต์ถูกต้องที่คุณต้องตรวจสอบซ็อกเก็ตของคุณเนื่องจากปี 2002 เป็นข้อผิดพลาดของซ็อกเก็ต

คำแนะนำที่ยอดเยี่ยมในการตั้งค่า LAMP คือ: http://library.linode.com/lamp-guides/centos-5.3/index-print


โปรแกรมติดตั้งไม่ได้ใส่ไฟล์ my.cnf แต่มีไฟล์ที่/usr/local/mysql/mysql-test/include/default_my.cnfควรคัดลอกเป็น my.cnf /etcหรือไม่
mk12

ใช่ แต่คุณอาจพบว่าคุณต้องแก้ไขบางส่วนในภายหลัง
ทอดด์โมเสส

7

ไม่ใช่ว่าจะช่วยคุณได้มากนัก แต่ในMySQL เวอร์ชันล่าสุด (และล่าสุดน้อยกว่า ) รหัสข้อผิดพลาด 2002 หมายถึง "ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ในเครื่องผ่านซ็อกเก็ต [name-of-socket]" ดังนั้นอาจบอกคุณได้ อีกเล็กน้อย


1
บน OSX 10.9.x ที่ติดตั้ง MySQL 5.5.38 จากต้นทางฉันได้รับข้อผิดพลาดนี้ เคล็ดลับนี้ถูกต้อง: เป็นปัญหาเกี่ยวกับซ็อกเก็ตแม้ว่า mysqli_connect_errno () และ mysqli_connect_error ()) จะบอกว่าข้อความไม่พบไฟล์ 2002 ฉันสามารถแก้ไขปัญหานี้ได้โดยแก้ไข /etc/php.ini ของฉันและตั้งค่า mysql.default_socket และ mysqli.default_socket เพื่อแก้ไขค่าซ็อกเก็ต (เนื่องจากแอปพลิเคชันของฉันใช้ mysqli สำหรับการเชื่อมต่อ)
Ronnie

7

การขยายคำตอบของ Matthias D ที่นี่ฉันสามารถแก้ไขข้อผิดพลาดในปี 2002นี้ทั้งบน MySQL และ MariaDB ด้วยเส้นทางที่แน่นอนโดยใช้คำสั่งเหล่านี้:

ขั้นแรกให้รับเส้นทางจริงไปยังซ็อกเก็ต MySQL:

netstat -ln | grep -o -m 1 '/.*mysql.sock'

จากนั้นรับเส้นทาง PHP :

php -r 'echo ini_get("mysql.default_socket") . "\n";'

ใช้เอาต์พุตของคำสั่งทั้งสองนี้เชื่อมโยงขึ้น:

sudo ln -s /actualpath/mysql.sock /phppath/mysql.sock

หากส่งคืนNo such file or directoryคุณเพียงแค่สร้างเส้นทางไปยัง PHP mysql.sock ตัวอย่างเช่นหากเส้นทางของคุณคือ/var/mysql/mysql.sockคุณจะเรียกใช้:

sudo mkdir -p /var/mysql

จากนั้นลองคำสั่งsudo lnอีกครั้ง


6

ฉันจะตรวจสอบไฟล์ php.ini ของคุณและตรวจสอบว่า mysql.default_socket ตั้งค่าอย่างถูกต้องและตรวจสอบด้วยว่า mysqld ของคุณได้รับการกำหนดค่าอย่างถูกต้องด้วยไฟล์ซ็อกเก็ตที่สามารถเข้าถึงได้ ค่าเริ่มต้นโดยทั่วไปคือ "/tmp/mysql.sock"


โอเคมันบอก/var/mysql/mysql.sockแต่ไม่มีเส้นทางนั้น
mk12


6

ในกรณีของฉันฉันมีปัญหากับ mysqli_connect
เมื่อฉันต้องการเชื่อมต่อ
mysqli_connect('localhost', 'myuser','mypassword')
mysqli_connect_error () ส่งกลับข้อผิดพลาดนี้ "ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว"

สิ่งนี้ได้ผลสำหรับฉัน mysqli_connect('localhost:3306', 'myuser','mypassword')


นี้ทำงานได้ดีสำหรับฉัน; เป็นการเปลี่ยนแปลงที่ฉันต้องการในการโหลดแพ็คเกจสถิติอเมริกันฟุตบอลของ Armchair Analysis ลงในการติดตั้ง Mysql ในพื้นที่ของ OS X ขอบคุณ!
Michael Scott Cuthbert

ดีใจที่ได้ทราบ :)
masoud2011

4

ข้อผิดพลาด 2002 หมายความว่า MySQL ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูลภายในผ่านไฟล์ซ็อกเก็ต (เช่น/tmp/mysql.sock)

หากต้องการทราบว่าไฟล์ซ็อกเก็ตของคุณอยู่ที่ไหนให้เรียกใช้:

mysql_config --socket

จากนั้นตรวจสอบอีกครั้งว่าแอปพลิเคชันของคุณใช้ไฟล์ซ็อกเก็ต Unix ที่ถูกต้องหรือเชื่อมต่อผ่านพอร์ต TCP / IP แทน

จากนั้นตรวจสอบอีกครั้งว่า PHP ของคุณมีการตั้งค่าซ็อกเก็ต MySQL ที่ถูกต้องหรือไม่:

php -i | grep mysql.default_socket

และให้แน่ใจว่าไฟล์ที่มีอยู่

ทดสอบซ็อกเก็ต:

mysql --socket=/var/mysql/mysql.sock

หากซ็อกเก็ต Unix ผิดพลาดหรือไม่มีอยู่คุณสามารถเชื่อมโยงกับซ็อกเก็ตได้ตัวอย่างเช่น:

ln -vs /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock

หรือแก้ไขไฟล์การกำหนดค่าของคุณ (เช่นphp.ini)

ในการทดสอบการเชื่อมต่อPDOโดยตรงจาก PHP คุณสามารถเรียกใช้:

php -r "new PDO('mysql:host=localhost;port=3306;charset=utf8;dbname=dbname', 'root', 'root');"

ตรวจสอบการกำหนดค่าระหว่าง Apache และ CLI (อินเตอร์เฟสบรรทัดคำสั่ง) ด้วยเนื่องจากการกำหนดค่าอาจแตกต่างกัน

อาจเป็นไปได้ว่าเซิร์ฟเวอร์กำลังทำงานอยู่ แต่คุณกำลังพยายามเชื่อมต่อโดยใช้พอร์ต TCP / IP ชื่อไปป์หรือไฟล์ซ็อกเก็ต Unix ที่แตกต่างจากที่เซิร์ฟเวอร์กำลังรับฟัง ในการแก้ไขว่าคุณต้องเรียกใช้โปรแกรมไคลเอ็นต์ (เช่นการระบุ--portอ็อพชัน) เพื่อระบุหมายเลขพอร์ตที่ถูกต้องหรือชื่อไปป์หรือไฟล์ซ็อกเก็ต Unix ที่ถูกต้อง (เช่น--socketตัวเลือก)

ดู: การแก้ไขปัญหาการเชื่อมต่อกับ MySQL


เครื่องมือ / คำสั่งอื่น ๆ ที่สามารถช่วยในการติดตามปัญหา:

  • mysql --socket=$(php -r 'echo ini_get("mysql.default_socket");')
  • netstat -ln | grep mysql
  • php -r "phpinfo();" | grep mysql
  • php -i | grep mysql
  • ใช้ XDebug กับxdebug.show_exception_trace=1ในของคุณxdebug.ini
  • ใน OS X ให้ลองsudo dtruss -fn mysqldบน Linux debug ด้วยไฟล์strace
  • ตรวจสอบสิทธิ์บนซ็อกเก็ต Unix: stat $(mysql_config --socket)และหากคุณมีพื้นที่ว่างเพียงพอ ( df -h)
  • รีสตาร์ท MySQL ของคุณ
  • net.core.somaxconnตรวจสอบ

3

ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ภายในของคุณ (MAMP, XAMPP, WAMP ฯลฯ .. ) กำลังทำงานอยู่


นอกจากนี้หากคุณใช้ MAMP บน MacOS (แน่นอน!) คุณจะได้รับข้อผิดพลาดนี้หากคุณเข้าถึงไซต์ของคุณทันทีหลังจากปลุก Mac จากโหมดสลีป แน่นอนวิธีแก้ปัญหาก็คือรอและลองอีกครั้ง :-)
texelate

0

ฉันมีปัญหาที่คล้ายกัน
โดยพื้นฐานแล้วปัญหาคืออาจมี mysql ทำงานอยู่สองอินสแตนซ์
A) หนึ่งทำงานที่ /etc/init.d
B) หลอดไฟกำลังติดตั้งที่ / opt / lamp
วิธีแก้ปัญหา:
ขั้นตอนที่ 1: - ค้นหาอินสแตนซ์ที่รัน mysql ทั้งหมดโดยใช้ commnad "find / | grep mysqld"
ขั้นตอนที่ 2: - ปิดบริการที่ทำงานอยู่ที่ /etc/init.d โดยใช้บริการ mysql stop
ขั้นตอนที่ 3: - เริ่มบริการหลอดไฟใหม่โดยใช้ / opt / lamp / lamp restart

คุณควรจะไป :)


0

บน Mac System Preferences > MySQLก่อนที่จะทำทั้งหมดที่ทำงานหนักเพียงตรวจสอบการตั้งค่าใน บ่อยกว่านั้นฉันพบว่าทีมประสบปัญหานี้ตั้งแต่The MySQL Server Instance is stoppedนั้นมา

คลิกStart MySQL Serverปุ่มและเวทมนตร์จะเกิดขึ้น


0

ฉันใช้ PHP-FPM หรือเวอร์ชัน php หลายเวอร์ชันในเซิร์ฟเวอร์ของฉัน ในกรณีของฉันฉันอัปเดตค่า mysqli เนื่องจากไม่มีพารามิเตอร์ซ็อกเก็ตเริ่มต้น mysql:

mysqli.default_socket

ถึง :

mysql.default_socket = /path/to/mysql.sock

ขอบคุณ @Alec Gorge


0

ผมมีปัญหาเหมือนกัน. ในที่สุดซ็อกเก็ตของฉันก็พบใน /tmp/mysql.sock จากนั้นฉันก็เพิ่มพา ธ นั้นไปที่ php.ini ฉันพบซ็อกเก็ตที่นั่นจากการตรวจสอบหน้า "สถานะเซิร์ฟเวอร์" ใน MySQL Workbench หากซ็อกเก็ตของคุณไม่ได้อยู่ใน /tmp/mysql.sock บางที MySQL Workbench อาจบอกคุณได้ว่ามันอยู่ที่ไหน? (ให้คุณใช้ MySQL Workbench ... )


0

ฉันได้ติดตั้ง MySQL โดยใช้โปรแกรมติดตั้ง ในความเป็นจริงไม่มีไดเร็กทอรีข้อมูลข้างไดเร็กทอรี "bin"

ดังนั้นฉันจึงสร้างไดเร็กทอรี 'data' ด้วยตนเองภายใต้ "C: \ Program Files \ MySQL \ MySQL Server 8.0" และการทำงาน (เปลี่ยนรหัสผ่านรากขั้นตอนต่อไปปัญหาในhttps://dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/resetting-permissions-windows.html


0

Digital Ocean MySql 2002-no-such-file-or-directory

เพิ่มท้ายไฟล์นี้ /etc/mysql/my.cnf

[mysqld]
innodb_force_recovery = 1

รีสตาร์ท MySql

service mysql restart


-1

ฉันมีปัญหาเดียวกันบนเซิร์ฟเวอร์ Linux สิ่งที่ช่วยฉันคือคำสั่ง' sudo reboot ' ซึ่งใช้ในการรีบูตเซิร์ฟเวอร์ Linux


-2

เปิดใช้งานและเริ่มบริการ mariadb

sudo systemctl เปิดใช้งาน mariadb.service

sudo systemctl เริ่มต้น mariadb.service

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.