ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ภายในผ่านซ็อกเก็ต homebrew


109

ฉันเพิ่งลองติดตั้ง MySQL ด้วย homebrew ( brew install mysql) และเมื่อฉันพยายามเรียกใช้ฉันได้รับข้อผิดพลาดต่อไปนี้:

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

ไม่มีหรือมิได้/tmp/mysql.sock/var/lib/mysql.sock

ฉันค้นหาแล้วและไม่พบmysql.sockไฟล์ใด ๆ

ฉันจะแก้ไขปัญหานี้ได้อย่างไร?


คุณสามารถดูคำตอบ GeekHades ลิงค์นี้ stackoverflow.com/questions/4847069/…
GeekHades

ฉันติดตั้ง mysql และมีปัญหาเดียวกันหลังจากที่แบตเตอรี่แล็ปท็อปของฉันเสียและบังคับให้ปิดเครื่องไม่สมบูรณ์ ควรmysqldตรวจสอบสิ่งต่าง ๆ และตรวจสอบให้แน่ใจว่า MySQL ปิดอย่างถูกต้องในครั้งล่าสุด หากมีการปิดเครื่อง "สกปรก" (เช่นหากแบตเตอรี่แล็ปท็อปบังคับให้ปิดระบบ) สิ่งนี้ควรทำความสะอาด จากนั้นคุณสามารถเริ่มต้นเซิร์ฟเวอร์ MySQL mysql.server startอีกครั้ง:
Dave Everitt

1
คำตอบนี้ใช้ได้กับฉัน: stackoverflow.com/a/6378429/2641861
ArnoHolo

สิ่งนี้เกิดขึ้นกับฉันหลังจากกู้คืน Mac Mini เครื่องใหม่จากข้อมูลสำรอง Time Machine ฉันต้องถอนการติดตั้ง mysql@5.7 และติดตั้งใหม่เพื่อให้มันเริ่มทำงานได้ ใช้ค้อนทุบเล็กน้อย แต่ก็ค่อนข้างไม่เจ็บปวดเนื่องจากยังคงการกำหนดค่าทั้งหมดของฉันไว้
Joshua Pinter

คำตอบ:


93

เมื่อคุณมีเซิร์ฟเวอร์ทำงานผ่าน

mysql.server start

คุณจะเห็นซ็อกเก็ตใน/tmp/mysql.sock อย่างไรก็ตามระบบที่ดูเหมือนว่าจะคาดหวังใน/var/mysql/mysql.sock ในการแก้ไขปัญหานี้คุณต้องสร้าง symlink ใน/ var / mysql :

sudo mkdir /var/mysql

sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

สิ่งนี้แก้ไขได้สำหรับฉัน ตอนนี้ phpMyAdmin ของฉันทำงานอย่างมีความสุขกับlocalhost และ 127.0.0.1

เครดิตตกเป็นของเฮนรี่


1
นอกจากนี้ยังช่วยแก้ปัญหาของฉันด้วย Wordpress ที่ไม่สามารถเชื่อมต่อกับ mySQL ขอบคุณอีกครั้ง
Ayoub

20
เมื่อฉันพยายามที่ฉันได้รับmysql.server start ERROR! The server quit without updating PID file (/usr/local/var/mysql/lyahdav-C02R32HCG8WM.pid)ฉันต้องการ MySQL เวอร์ชันเก่าที่ติดตั้งผ่านbrew install mysql@5.6ไฟล์.
Liron Yahdav

3
วิ่ง. mysql.server startแก้ไขให้ฉัน
Stylishcoder

@ ลิรอนคุณแก้ไขปัญหาที่คุณกำลังเผชิญอยู่หรือไม่? ฉันกำลังประสบปัญหาเดียวกันโดยไม่มีความช่วยเหลือ
Buddy

@EB เป็นเวลานานแล้วที่ฉันมีปัญหานี้ แต่เมื่อมองย้อนกลับไปที่ความคิดเห็นของฉันคุณได้ลองวิธีแก้ปัญหาเพื่อติดตั้ง MySQL เวอร์ชันเก่ากว่าหรือไม่ นอกจากนั้นฉันไม่ได้มีความคิดที่น่าเสียดาย
Liron Yahdav

61

ดูเหมือนว่าเซิร์ฟเวอร์ mysql ของคุณยังไม่เริ่มทำงาน ฉันมักจะเรียกใช้คำสั่งหยุดแล้วเริ่มใหม่อีกครั้ง:

mysqld stop
mysql.server start

ข้อผิดพลาดเดียวกันนี้ใช้ได้กับฉัน


89
. ผิดพลาด! เซิร์ฟเวอร์หยุดทำงานโดยไม่อัปเดตไฟล์ PID (/usr/local/var/mysql/myHostName.pid) เหรอ?
Pesulap

ฉันทำmysqld &ตามความคิดเห็นข้างต้น แต่ฉันคิดว่ามันอาจจะทำในสิ่งเดียวกันเพราะmysqld stop ฉันค่อนข้างมั่นใจในกรณีของฉันว่าเป็นเพราะการปิดระบบที่ไม่เหมาะสม
Mitch VanDuyn

54

ฉันมีไดเรกทอรีบางส่วนที่เหลือจากการติดตั้ง mysql (8.0) อื่นซึ่งไม่ได้ถูกลบออก

ฉันแก้ไขสิ่งนี้โดยทำสิ่งต่อไปนี้:

ก่อนอื่นให้ถอนการติดตั้ง mysql

brew uninstall mysql@5.6

ลบโฟลเดอร์ / ไฟล์ที่ไม่ได้ลบออก

rm -rf /usr/local/var/mysql
rm /usr/local/etc/my.cnf

ติดตั้ง mysql ใหม่และเชื่อมโยง

brew install mysql@5.6
brew link --force mysql@5.6

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

brew services start mysql@5.6

3
ขอบคุณมาก :) คำแนะนำทั้งหมดล้มเหลว แต่เป็นของคุณ
Vyacheslav Loginov

1
ขอบคุณ - คำตอบนี้สิ้นสุด 24 ชม. ของการทุบหัวกับกำแพง
vladiim

1
สิ่งนี้ใช้ได้ผลกับฉันด้วยหลังจากลองทำทุกอย่างที่นั่น! ขอบคุณ!!!! :)
Eric

1
ดูเหมือนว่าปัญหาสำหรับฉันคือฉันยังมี / usr / local / var / mysql หลังจากการติดตั้งครั้งก่อน เคล็ดลับการเอาออก! ขอบคุณสำหรับข้อเสนอแนะ
themantimes8

ฉันจำเป็นต้องเรียกใช้ขั้นตอน "mysql_secure_installation" ที่ homebrew กล่าวถึงก่อนที่ข้อผิดพลาดนี้จะหายไป
searaig

27

ลองเชื่อมต่อโดยใช้ "127.0.0.1" แทน "localhost"


2
@Esteban MySQL จะพยายามเชื่อมต่อกับซ็อกเก็ต unix ถ้าคุณบอกให้เชื่อมต่อกับ "localhost" หากคุณบอกให้เชื่อมต่อกับ 127.0.0.1 คุณกำลังบังคับให้เชื่อมต่อกับซ็อกเก็ตเครือข่าย ดังนั้นคุณอาจตั้งค่า MySQL ให้ฟังเฉพาะซ็อกเก็ตเครือข่ายไม่ใช่ซ็อกเก็ตระบบไฟล์ (ที่มา: serverfault.com/a/295300/59101 )
อาดีอร่าม

สิ่งนี้ช่วยให้ฉันบังคับไคลเอ็นต์ mysql ให้ใช้ซ็อกเก็ต TCP เนื่องจากฉันกำลังเรียกใช้อุโมงค์ SSH บน localhost ไปยัง MySQL DB ระยะไกลของฉัน
IOW

22

1) หากคุณสามารถเห็น "mysql หยุดทำงาน" เมื่อคุณเรียกใช้คำสั่งด้านล่าง

brew services list

2) และหากคุณสามารถเริ่ม mysql ด้วยคำสั่งด้านล่าง

mysql server start

หมายความว่า; mysql สามารถเริ่มต้นได้ด้วยตนเอง แต่จะไม่เริ่มทำงานโดยอัตโนมัติเมื่อระบบปฏิบัติการเริ่มทำงาน การเพิ่ม mysql ในบริการจะช่วยแก้ปัญหานี้ได้ ในการทำเช่นนั้นคุณสามารถเรียกใช้คำสั่งด้านล่าง

brew services start mysql

หลังจากนั้นคุณสามารถรีสตาร์ทระบบปฏิบัติการของคุณและลองเชื่อมต่อกับ mysql เพื่อดูว่าระบบเริ่มทำงานโดยอัตโนมัติหรือไม่ ฉันทำเช่นเดียวกันและหยุดรับข้อผิดพลาดด้านล่าง

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

ฉันหวังว่านี่จะช่วยได้.


@berk ช่วยในกรณีของฉันในการรับข้อผิดพลาดอีกครั้ง แต่แจ้งข้อผิดพลาดอีกครั้ง 'ERROR 1045 (28000): การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้' user '@' localhost '(โดยใช้รหัสผ่าน: NO)'
Pratik Khadka

สวัสดี @PratikKhadka ข้อผิดพลาดที่คุณได้รับตอนนี้หมายความว่า mysql กำลังทำงานอยู่และคุณมีปัญหาในการตรวจสอบสิทธิ์ ตามข้อความแสดงข้อผิดพลาดที่คุณโพสต์แสดงว่าคุณใช้ชื่อผู้ใช้เป็น 'ผู้ใช้' และไม่ใช้รหัสผ่าน คุณควรใช้ชื่อผู้ใช้และรหัสผ่านที่ถูกต้อง ฉันขอแนะนำให้คุณตรวจสอบลิงค์ต่อไปนี้ " forums.mysql.com/read.php?34,140320,140324 "
เบิร์ก

ไม่จำเป็นต้องรีสตาร์ท OS เพียงแค่เรียกใช้ "brew services start mysql" ก็ใช้ได้สำหรับฉัน ขอบคุณ!
AKS

สวัสดี @AKS คุณพูดถูก ไม่จำเป็นต้องรีสตาร์ทเพื่อให้ทำงานได้ ฉันแก้ไขคำตอบเพื่ออธิบายว่าทำไมต้องรีสตาร์ท จำเป็นต้องดูว่า mysql เริ่มทำงานโดยอัตโนมัติหรือไม่เมื่อ OS เริ่มทำงาน ขอบคุณสำหรับคำติชม!
Berk

5

ไฟล์/tmp/mysql.sockนี้น่าจะเป็น Named-Pipe เนื่องจากอยู่ในโฟลเดอร์ชั่วคราว ไปป์ที่มีชื่อเป็นไฟล์พิเศษที่ไม่เคยถูกจัดเก็บอย่างถาวร

ถ้าเราสร้างสองโปรแกรมและเราต้องการให้โปรแกรมหนึ่งส่งข้อความไปยังโปรแกรมอื่นเราสามารถสร้างไฟล์ข้อความได้ เรามีโปรแกรมหนึ่งเขียนบางอย่างในไฟล์ข้อความและอีกโปรแกรมอ่านสิ่งที่โปรแกรมอื่นของเราเขียน นั่นคือสิ่งที่เป็นไปป์ยกเว้นว่าจะไม่เขียนไฟล์ลงในฮาร์ดดิสก์ของคอมพิวเตอร์ของเรา IE จะไม่จัดเก็บไฟล์อย่างถาวร (เหมือนที่เราทำเมื่อสร้างไฟล์และบันทึก)

ซ็อกเก็ตเหมือนกับท่อ ความแตกต่างคือโดยปกติแล้ว Sockets จะใช้ผ่านเครือข่ายระหว่างคอมพิวเตอร์ ซ็อกเก็ตส่งข้อมูลไปยังคอมพิวเตอร์เครื่องอื่นหรือรับข้อมูลจากคอมพิวเตอร์เครื่องอื่น ทั้ง Pipes และ Sockets ใช้ไฟล์ชั่วคราวในการแชร์เพื่อให้สามารถ 'สื่อสาร' ได้

ยากที่จะแยกแยะว่า MySql ตัวใดใช้ในกรณีนี้ ไม่สำคัญว่า

คำสั่งmysql.server startควรได้รับ 'เซิร์ฟเวอร์' (โปรแกรม) ที่เรียกใช้ลูปแบบไม่สิ้นสุดซึ่งจะสร้างไฟล์พิเศษนั้นและรอการเปลี่ยนแปลง ( listenสำหรับการเขียน)

หลังจากนั้นปัญหาทั่วไปอาจเกิดจากโปรแกรม MySql ไม่มีสิทธิ์สร้างไฟล์บนเครื่องของคุณดังนั้นคุณอาจต้องให้สิทธิ์รูท

sudo mysql.server start

สิ่งนี้ใช้งานได้ดีขอบคุณ ฉันวิ่งmysql.server start, mysql.server stopและจากนั้นก็เริ่มให้บริการผ่านทาง homebrew อีกครั้งด้วยbrew services start mysql@5.7และสิ่งที่วิ่งได้อย่างราบรื่น
taylorthurlow

4

หลังจากติดตั้ง macos mojave ต้องล้างโฟลเดอร์ mysql ข้างใต้/usr/local/var/mysqlจากนั้นติดตั้งใหม่โดยใช้brew install mysqlสิ่งที่เกี่ยวข้องกับการอนุญาตอื่น ๆ จะเกิดขึ้นทั่วทุกที่


ฉันแก้ไขปัญหาของฉันด้วยคำตอบของคุณฉันได้ติดตั้ง mysql ไว้ก่อนหน้านี้แล้วพยายามปรับลดรุ่นเป็น mysql@5.6
Rodrirokr

ขอบคุณครับ. มันแก้ปัญหาของฉันด้วย การลบ / usr / local / var / mysql และการติดตั้งใหม่เป็นวิธีแก้ปัญหาสำหรับฉัน
Oğuz Can Sertel

1
ระวัง: การลบ/usr/local/var/mysqlคุณจะลบฐานข้อมูลที่มีอยู่ทั้งหมดด้วย!
Leonardo

3

ฉันได้รับข้อผิดพลาดเดียวกันและนี่คือสิ่งที่ช่วยฉัน:

$ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
$launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
$mysql -uroot
mysql>

3

เพียงเพื่อเพิ่มคำตอบเหล่านี้ในกรณีของฉันฉันไม่มีเซิร์ฟเวอร์ mySQL ภายในเครื่องกำลังทำงานอยู่ภายในคอนเทนเนอร์นักเทียบท่า ดังนั้นจึงไม่มีไฟล์ซ็อกเก็ตและจะไม่สามารถเข้าถึงได้สำหรับไคลเอนต์ "mysql"

ไฟล์ถุงเท้าถูกสร้างขึ้นโดย mysqld และ mysql ใช้สิ่งนี้เพื่อสื่อสารกับมัน อย่างไรก็ตามหากเซิร์ฟเวอร์ mySql ของคุณไม่ได้ทำงานในระบบก็ไม่จำเป็นต้องใช้ไฟล์ถุงเท้า

โดยการระบุชื่อโฮสต์ / ip ไม่จำเป็นต้องใช้ไฟล์ sock เช่น

mysql --host=127.0.0.1 --port=3306 --user=xyz --password=xyz

3

เนื่องจากฉันใช้เวลาพอสมควรในการแก้ไขปัญหานี้และมักจะกลับมาที่หน้านี้เมื่อค้นหาข้อผิดพลาดนี้ฉันจะทิ้งวิธีแก้ปัญหาไว้ที่นี่โดยหวังว่าใครสักคนจะช่วยประหยัดเวลาที่ฉันเสียไป แม้ว่าในกรณีของฉันฉันใช้ mariadb แทน MySql แต่คุณอาจยังปรับแก้ปัญหานี้ให้เข้ากับความต้องการของคุณได้

ปัญหาของฉัน

เหมือนกัน แต่การตั้งค่าของฉันแตกต่างกันเล็กน้อย (mariadb แทน mysql):

ติดตั้ง mariadb ด้วย homebrew

$ brew install mariadb

เริ่มต้นภูต

$ brew services start mariadb

พยายามเชื่อมต่อและได้รับข้อผิดพลาดดังกล่าวข้างต้น

$ mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

ทางออกของฉัน

ค้นหาmy.cnfไฟล์ที่ใช้mysql(ตามที่แนะนำในความคิดเห็นนี้):

$ mysql --verbose --help | grep my.cnf
/usr/local/etc/my.cnf ~/.my.cnf
                        order of preference, my.cnf, $MYSQL_TCP_PORT,

ตรวจสอบว่าไฟล์ซ็อกเก็ต Unix ทำงานอยู่ที่ใด (เกือบตามที่อธิบายไว้ที่นี่ ):

$ netstat -ln | grep mariadb
.... /usr/local/mariadb/data/mariadb.sock

(คุณอาจต้องการgrep mysqlแทน mariadb)

เพิ่มไฟล์ซ็อกเก็ตที่คุณพบ~/.my.cnf(สร้างไฟล์หากจำเป็น) (สมมติว่า~/.my.cnfอยู่ในรายการเมื่อรันmysql --verbose ...คำสั่ง - จากด้านบน):

[client]
socket = /usr/local/mariadb/data/mariadb.sock

รีสตาร์ท mariadb ของคุณ:

$ brew services restart mariadb

หลังจากนี้ฉันสามารถเรียกใช้ mysql และรับ:

$ mysql -uroot
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

ดังนั้นฉันจึงเรียกใช้คำสั่งด้วยสิทธิ์ superuser แทนและหลังจากป้อนรหัสผ่านแล้วฉันได้รับ:

$ sudo mysql -uroot
MariaDB [(none)]>

หมายเหตุ:

  1. ฉันไม่ค่อยแน่ใจเกี่ยวกับกลุ่มที่คุณต้องเพิ่มซ็อกเก็ตก่อนอื่นฉันมี [ไคลเอนต์เซิร์ฟเวอร์] แต่ฉันคิดว่า [ไคลเอนต์] น่าจะเพียงพอแล้ว เลยเปลี่ยนใหม่ก็ยังใช้ได้

  2. เมื่อเรียกใช้mariadb_config | grep socketฉันได้รับ: --socket [/tmp/mysql.sock] ซึ่งค่อนข้างสับสนเนื่องจากดูเหมือนว่า/usr/local/mariadb/data/mariadb.sockเป็นสถานที่จริง (อย่างน้อยก็ในเครื่องของฉัน)

  3. ฉันสงสัยว่าฉันสามารถกำหนดค่า/usr/local/mariadb/data/mariadb.sockให้เป็นจริงได้ที่ไหน/tmp/mysql.sockดังนั้นฉันจึงสามารถใช้การตั้งค่าเริ่มต้นแทนที่จะต้องแก้ไข.my.cnf(แต่ตอนนี้ฉันเหนื่อยเกินไปที่จะคิดออก ... )

  4. ในบางครั้งฉันก็ทำสิ่งที่กล่าวถึงในคำตอบอื่น ๆ ก่อนที่จะมาถึงสิ่งนี้


2

คุณจะต้องเรียกใช้mysql_install_db- วิธีที่ง่ายที่สุดคือถ้าคุณอยู่ในไดเรกทอรีการติดตั้ง:

$ cd /usr/local/Cellar/mysql/<version>/ 
$ mysql_install_db

หรือคุณสามารถเลี้ยงพารามิเตอร์เช่นต่อไปนี้:mysql_install_dbbasedir

$ mysql_install_db --basedir="$(brew --prefix mysql)"

2

ฉันประสบปัญหาเดียวกันในเครื่อง Mac และแก้ไขได้โดยทำตามบทช่วยสอนต่อไปนี้

https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew

แต่อย่าลืมฆ่าหรือถอนการติดตั้งเวอร์ชันเก่าก่อนดำเนินการต่อ

คำสั่ง:

brew uninstall mariadb

xcode-select --install

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - See more at: https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew#sthash.XQoxRoJp.dpuf

brew doctor

brew update

brew info mariadb

brew install mariadb

mysql_install_db

mysql.server start

1
โปรดอธิบายด้วยตัวอย่างสั้น ๆ ว่าลิงก์ที่คุณให้มาช่วยคุณได้อย่างไร ลิงก์อาจหายไปดังนั้นนี่อาจเป็นสาเหตุที่คำตอบของคุณอาจถูกลบ
Kurt Van den Branden

2

หลังจากรีสตาร์ทฉันไม่สามารถเชื่อมต่อกับ mariadb ในเครื่องได้การค้นหาก็นำฉันมาที่หน้านี้และฉันต้องการแบ่งปันวิธีแก้ปัญหาของฉันกับคุณ

ฉันสังเกตเห็นว่าไดเร็กทอรี my.cnf.d ใน / usr / local / etc / หายไป

นี่เป็นข้อบกพร่องที่รู้จักกับ homebrew ซึ่งมีการอธิบายและแก้ไขที่นั่น https://github.com/Homebrew/homebrew-core/issues/36801

วิธีที่รวดเร็วในการแก้ไข: mkdir /usr/local/etc/my.cnf.d


สิ่งนี้ได้ผลสำหรับฉัน ไม่สามารถเชื่อมต่อกับ mariadb ในเครื่องหลังจากนั้นbrew updateและรีสตาร์ท brew services listผลลัพธ์แสดงสถานะ mariadb เป็นstartedสีเหลือง ขอบคุณสำหรับทิป.
08:51 น

1

เมื่อเรียกใช้mysql_secure_installationและป้อนรหัสผ่านใหม่ฉันได้รับ:


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


ฉันสังเกตเห็นเมื่อลองทำสิ่งต่อไปนี้จากคำตอบนี้ :

netstat -ln | grep mysql

มันไม่ได้ส่งคืนอะไรเลยและฉันก็คิดว่านั่นหมายความว่าไม่มีไฟล์. stock

ดังนั้นฉันจึงเพิ่มสิ่งต่อไปนี้ในไฟล์my.cnfของฉัน(ทั้งใน/etc/my.cnfหรือในกรณีของฉัน/usr/local/etc/my.cnf )

ภายใต้:

[mysqld]
socket=/tmp/mysql.sock

ภายใต้:

[client]
socket=/tmp/mysql.sock

โดยอ้างอิงจากโพสต์นี้

จากนั้นหยุด / เริ่ม mysql อีกครั้งและลองmysql_secure_installationอีกครั้งซึ่งในที่สุดให้ฉันป้อนรหัสผ่านรูทใหม่และดำเนินการตั้งค่าการตั้งค่าอื่น ๆ ต่อไป

ฉันหวังว่านี่จะช่วยใครบางคนได้ ผู้ชายฉันเกลียดสิ่งนี้ ...


0

เพื่อให้เธรดนี้สมบูรณ์ ดังนั้น MAMP (PRO) จึงถูกใช้บ่อย

เส้นทางที่นี่คือ

/Applications/MAMP/tmp/mysql/mysql.sock

0

ฉันเริ่ม mysql ด้วยตนเองในบานหน้าต่างการตั้งค่าระบบโดยการเริ่มต้นฐานข้อมูลจากนั้นเริ่มต้น สิ่งนี้ช่วยแก้ปัญหาของฉันได้


0

ในกรณีของฉันพบผู้กระทำความผิดในไฟล์บันทึก:

$ tail /usr/local/var/mysql/<hostname>.lan.err
2019-09-19  7:32:21 0 [ERROR] InnoDB: redo log file './ib_logfile0' exists. Creating system tablespace with existing redo log files is not recommended. Please delete all redo log files before creating new system tablespace.
2019-09-19  7:32:21 0 [ERROR] InnoDB: Database creation was aborted with error Generic error. You may need to delete the ibdata1 file before trying to start up again.

ดังนั้นฉันจึงเปลี่ยนชื่อib_logfile0เพื่อกำจัดข้อผิดพลาด (ฉันต้องทำเช่นเดียวกันในib_logfile1ภายหลัง)

mv /usr/local/var/mysql/ib_logfile0 /usr/local/var/mysql/ib_logfile0_bak
mv /usr/local/var/mysql/ib_logfile1 /usr/local/var/mysql/ib_logfile1_bak
brew services restart mariadb

0

ฉันมีปัญหาเดียวกัน หลังจากลองใช้วิธีการทั้งหมดนี้แล้วไม่ประสบความสำเร็จฉันได้ทำสิ่งต่อไปนี้:

tail -f the-mysql-or-maria-db-error-file.err

ในคอนโซลอื่น:

brew services restart mariadb

ฉันเห็นข้อผิดพลาดต่อไปนี้:

"การกู้คืนข้อขัดข้องของ MAC HOMEBREW ล้มเหลวให้แก้ไขปัญหา (หากมีเช่นข้อผิดพลาดหน่วยความจำไม่เพียงพอ) และรีสตาร์ทหรือลบบันทึก tc และเริ่ม mysqld ด้วย"

ดังนั้นฉันจึงเปลี่ยนการtc.logขยายเป็นtc.log.txtและรีสตาร์ท mariadb

brew services restart mariadb

และเสร็จแล้ว!




-1

สำหรับฉันฉันได้ติดตั้งนานมาแล้วติดตั้งแล้วmariadbmysql@5.7

เมื่อฉันดำเนินการmysql -urootฉันได้รับข้อผิดพลาด: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

อ่านคำตอบ:

  • ฉันถอนการติดตั้ง mariadb
  • ลบโฟลเดอร์ /usr/local/var/mysql
  • รันคำสั่ง mysqld --initialize

จากนั้นฉันก็สามารถ mysql -uroot -p

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