ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ 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.