ชงติดตั้ง mysql บน macOS


344

ฉันพยายามที่จะติดตั้งขึ้น MySQL บน Mac OS 10.6 ใช้ Homebrew brew install mysql 5.1.52โดย

mysql_install_dbทุกอย่างเป็นไปด้วยดีและผมก็ประสบความสำเร็จด้วย
อย่างไรก็ตามเมื่อฉันพยายามเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้:

/usr/local/Cellar/mysql/5.1.52/bin/mysqladmin -u root password 'mypass'

ฉันเข้าใจ:

/usr/local/Cellar/mysql/5.1.52/bin/mysqladmin: เชื่อมต่อกับเซิร์ฟเวอร์ที่ 'localhost' 
ข้อผิดพลาดที่ล้มเหลว: 'การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้' รูท '@' localhost '(ใช้รหัสผ่าน: NO)'

ฉันพยายามเข้าถึงmysqladmin or mysql using -u root -prootด้วยเช่นกัน
แต่มันก็ใช้ไม่ได้กับหรือไม่มีรหัสผ่าน

นี่เป็นการติดตั้งใหม่บนเครื่องใหม่และเท่าที่ฉันรู้การติดตั้งใหม่นั้นจะต้องสามารถเข้าถึงได้โดยไม่ต้องใช้รหัสผ่านรูท ฉันก็ลอง:

/usr/local/Cellar/mysql/5.1.52/bin/mysql_secure_installation

แต่ฉันก็ยังได้

ข้อผิดพลาด 1045 (28000): การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'root' @ 'localhost' (ใช้รหัสผ่าน: NO)


ดูเพิ่มเติมที่: apple.stackexchange.com/a/199747/152271 ... มันไม่ใช่การติดตั้ง แต่มันทำงานได้ดีสำหรับฉันเมื่อไม่มีคำตอบที่นี่
sudo rm -rf slash

1
FWIW ฉันใช้mysql -u rootและทำงานได้ที่นี่: |
rogerdpack

คำตอบ:


684

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

ใช้remove& cleanupคำสั่งชงของ, ยกเลิกการโหลดlaunchctlสคริปต์, จากนั้นลบไดเรกทอรี mysql /usr/local/var, ลบที่มีอยู่ของฉัน/etc/my.cnf(ปล่อยให้มันหนึ่งขึ้นอยู่กับคุณ, มันควรจะใช้) และเปิดใช้งาน

อัพเดตสตริงสำหรับ plist โปรดทราบว่าไดเรกทอรีสคริปต์ความปลอดภัยทางเลือกของคุณจะเป็นไปตามรุ่นของ MySQL ที่คุณกำลังติดตั้ง

เป็นขั้นเป็นตอน:

brew remove mysql

brew cleanup

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

sudo rm -rf /usr/local/var/mysql

จากนั้นฉันก็เริ่มจากศูนย์:

  1. ติดตั้ง mysql ด้วย brew install mysql
  2. แนะนำให้ใช้คำสั่งชง: (ดูหมายเหตุ: ด้านล่าง)

    unset TMPDIR
    
    mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
    
  3. เริ่ม mysql ด้วยmysql.server startคำสั่งเพื่อให้สามารถเข้าสู่ระบบได้

  4. ใช้สคริปต์ความปลอดภัยสำรอง:

    /usr/local/Cellar/mysql/5.5.10/bin/mysql_secure_installation
  5. ติดตามlaunchctlส่วนจากเอาต์พุตสคริปต์แพ็กเกจ Brew เช่น

    #start
    launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    
    #stop
    launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    

หมายเหตุ:--forceบิตบนbrew cleanupยังจะล้าสมัยถังล้างคิดว่ามันเป็นคุณลักษณะ homebrew ใหม่ ish

หมายเหตุข้อที่สอง:ผู้วิจารณ์บอกว่าไม่จำเป็น ฉันไม่ต้องการทดสอบดังนั้น YMMV!


30
คำตอบที่ดีขอบคุณ! สิ่งหนึ่งที่เพิ่ม: แม้ว่าจะมีการกล่าวถึงในคำตอบ แต่ฉันก็พลาดไปและทำให้เสียเวลาประมาณ 6 ชั่วโมงในการพยายามติดตั้ง Lion OSX ตรวจสอบให้แน่ใจว่าคุณลบไดเรกทอรีเก่า mysql ที่ / usr / local / var / mysql ถ้าคุณมี MySql รุ่นก่อนหน้านี้ก่อนที่คุณจะติดตั้งใหม่ ไม่เช่นนั้นคุณจะไม่สามารถเข้าสู่ระบบในฐานะ root ในขั้นต้นเพื่อตั้งรหัสผ่านและคุณจะใช้เวลามากในการตะโกนใส่คอมพิวเตอร์ของคุณ
tronbabylove

3
ไปที่ ~ / Library / LaunchAgents เพื่อดูว่าไฟล์. plist สำหรับ mysql นั้นมีชื่อว่าอะไร - ในกรณีของฉันมันถูกติดตั้งโดย homebrew ดังนั้นคุณต้องแก้ไขขั้นตอนการถอนการติดตั้งข้างต้น
Marco

7
เนื่องจากเธรดนี้เก่าบรรทัด "launchctl unload" ด้านบนจึงไม่ถูกต้อง การติดตั้งไฟล์ homebrew ไม่ได้เรียกว่า "com.mysql.mysqld.plist" อีกต่อไปซึ่งเรียกว่า "homebrew.mxcl.mysql.plist" ตอนนี้บรรทัดควรอ่าน "launchctl unload -w ~ / Library / LaunchAgents / homebrew.mxcl.mysql.plist"
Tommy

4
ฉันมี `[~ / Library / LaunchAgents] $ ls com.adobe.ARM.202f4087f2bbde52e3ac2df389f53a4f123223c9cc56a8fd83a6f7ae.plist com.mysql.mysql.mysqld.mpl / LaunchAgents` แต่ให้ยกเลิกการโหลดพวกเขาให้launchctl: Couldn't stat("com.mysql.mysqld.plist"): No such file or directory
Ava

9
mysql_install_db สามารถถูกละเว้นได้ Brew สร้างเซิร์ฟเวอร์โดยอัตโนมัติในทิศทางที่ถูกต้อง
rfreytag

52

นี่คือคำแนะนำโดยละเอียดรวมการกำจัด MySQL ทั้งหมดจาก Mac ของคุณแล้วติดตั้ง The Brew Way ตามที่ Sedorner เขียนไว้ด้านบน:

ลบ MySQL อย่างสมบูรณ์ต่อThe Tech Lab

  • ps -ax | grep mysql
  • หยุดและkillกระบวนการ MySQL ใด ๆ
  • sudo rm /usr/local/mysql
  • sudo rm -rf /usr/local/var/mysql
  • sudo rm -rf /usr/local/mysql*
  • sudo rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
  • sudo rm -rf /Library/StartupItems/MySQLCOM
  • sudo rm -rf /Library/PreferencePanes/My*
  • launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
  • แก้ไข/etc/hostconfigและลบบรรทัดMYSQLCOM=-YES-
  • rm -rf ~/Library/PreferencePanes/My*
  • sudo rm -rf /Library/Receipts/mysql*
  • sudo rm -rf /Library/Receipts/MySQL*
  • sudo rm -rf /private/var/db/receipts/*mysql*
  • sudo rm -rf /tmp/mysql*
  • พยายามเรียกใช้mysqlมันไม่ควรทำงาน

Brew ติดตั้ง MySQL ต่อผู้ใช้ Sedorner จากคำตอบของStackOverflow

  • brew doctor และแก้ไขข้อผิดพลาดใด ๆ
  • brew remove mysql
  • brew cleanup
  • brew update
  • brew install mysql
  • unset TMPDIR

    mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp # whoami is executed inline
  • mysql.server start

  • เรียกใช้คำสั่งที่ Brew แนะนำเพิ่ม MySQL ลงไปlaunchctlเพื่อให้มันเปิดตัวโดยอัตโนมัติเมื่อเริ่มต้น

mysql ตอนนี้ควรทำงานและทำงานตลอดเวลาตามที่คาดไว้

โชคดี


3
ฉันยังถูกกัดโดยทำตามข้างต้นโดยไม่ต้องลบ /tmp/mysql.sock ก่อน
TKH

ขอบคุณ +1 ความคิดเห็นsudo rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plistสองสามประการ: คุณพูดแล้วหลังจากนั้นไม่กี่ขั้นตอนคุณลองlaunchctl unloadไฟล์นั้น ... แต่มันจะไม่อยู่ที่นั่นเพราะคุณลบมัน อีกทั้งbrew install mysqlวิ่งตามmysql_install_dbขั้นตอนให้ฉันโดยไม่ต้องทำสองครั้ง
Madbreaks

@CorySimmons หมายความว่าฉันควรใช้ชื่อของฉันเองหรือrootในwhoamiส่วนของคำสั่งของคุณ?
YPCrumble

1
ยืนยันแล้ว - whoami คือชื่อของฉัน (ฉันใช้root) มันใช้งานได้ดีมาก
YPCrumble

โปรดทราบว่า/etc/hostconfigไม่มีอยู่ในโยเซมิตีและที่อื่น ๆ ( superuser.com/questions/850974/ … )
ecbrodie

44

มีปัญหาเดียวกัน ดูเหมือนว่ามีบางอย่างผิดปกติกับคำแนะนำในการตั้งค่าหรือตารางเริ่มต้นที่ถูกสร้างขึ้น นี่คือวิธีที่ฉันได้ mysqld ทำงานบนเครื่องของฉัน

หากเซิร์ฟเวอร์ mysqld ทำงานบน Mac ของคุณให้หยุดก่อนด้วย:

launchctl unload -w ~/Library/LaunchAgents/com.mysql.mysqld.plist

เริ่มต้นเซิร์ฟเวอร์ mysqld ด้วยคำสั่งต่อไปนี้ซึ่งช่วยให้ทุกคนเข้าสู่ระบบด้วยสิทธิ์แบบเต็ม

mysqld_safe --skip-grant-tables

จากนั้นเรียกใช้mysql -u rootซึ่งตอนนี้ควรให้คุณเข้าสู่ระบบได้สำเร็จโดยไม่ต้องใช้รหัสผ่าน คำสั่งต่อไปนี้ควรรีเซ็ตรหัสผ่านรูททั้งหมด

UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES;

ตอนนี้ถ้าคุณฆ่า mysqld_safe ที่กำลังรันอยู่และเริ่มต้นใหม่อีกครั้งโดยไม่มีตัวเลือก skip-grant-tables คุณควรจะสามารถเข้าสู่ระบบด้วยmysql -u root -pและรหัสผ่านใหม่ที่คุณเพิ่งตั้ง


สิ่งนี้ได้ผลสำหรับฉัน! ฉันเริ่มเดารหัสผ่านก่อนที่จะลองทำเช่นนี้และรหัสผ่านก็กลายเป็น 'รหัสผ่าน' ดังนั้นลองทำดู
cointilt

เปิดตัว mysqld_safe โดยไม่มีตารางการให้สิทธิ์ทำงานให้ฉัน อย่างไรก็ตาม UPDATE ไม่ทำงานเนื่องจากฉันไม่มีบันทึกใด ๆ ใน select * จาก mysql.user เนื่องจากเรามีอยู่ในระบบเป็นรากเราก็สามารถแทรกหนึ่งสำหรับรากโดยการทำงานให้สิทธิ์ทั้งหมดบน ถึง 'root' @ 'localhost' ที่ระบุโดย 'Anything'; สิทธิในการชำระล้าง
รูเพิร์ต

ฉันใช้สคริปต์หยุดบริการ / และมันยังคงรีสตาร์ท นั่นเป็นเพราะฉันไม่เคยยกเลิกการเปิดใช้ LaunchAgent หรือไม่ (doh)
reneruiz

1
สิ่งที่ได้ผลสำหรับฉันคือสิ่งที่คล้ายกับสิ่งที่คุณทำ ในส่วนที่คุณอัพเดตรหัสผ่านของผู้ใช้ฉันต้องทำ: ใช้ mysql; อัปเดตชุดผู้ใช้ authentication_string = รหัสผ่าน ('1111') โดยที่ user = 'root'; เช่นเดียวกับใน: stackoverflow.com/a/31122246/1328261
ruhanbidart

16

หากผู้ผลิตติดตั้ง MySQL 5.7 กระบวนการจะแตกต่างจากเวอร์ชั่นก่อนหน้าเล็กน้อย ในการรีเซ็ตรหัสผ่านรูทให้ทำดังนี้:

sudo rm -rf /usr/local/var/mysql
mysqld --initialize

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

mysql.server start
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'my-new-password';" | mysql -uroot --password=TEMPORARY_PASSWORD

2
ฉันเห็นรหัสผ่านชั่วคราวที่สร้างขึ้น แต่เมื่อฉันพยายามเรียกใช้ mysql ฉันจะได้รับ: ERROR! The server quit without updating PID file (/usr/local/var/mysql/XXXXX.local.pid).และเมื่อฉันใช้ mysql -u root รหัสผ่านจะไม่ได้รับการยอมรับ
forloop

1
ฉันติดตั้ง mysql 5.7.9 สำเร็จโดยใช้โปรแกรมติดตั้ง dmgซึ่งแจ้งให้ฉันทราบว่ามีหน้าต่างสร้างรหัสผ่านชั่วคราวสำหรับฉัน และตอนนี้mysqlทำงานอย่างถูกต้อง น่าเสียดายที่ฉันต้องใช้เวลาจำนวนมากเพื่อให้มันทำงานบน Macbook ใหม่เอี่ยม : |
forloop

1
@forloop 1. ps -ef | grep mysql 2. kill -9 pid 3. mysql.server เริ่มต้น
oshaiken

สำหรับฉันการรีเซ็ต / เปลี่ยนรหัสผ่านไม่ทำงาน ฉันต้องเข้าสู่ mysql โดยใช้รหัสผ่านชั่วคราวจากนั้นเรียกใช้คำสั่ง alter 1 mysql -u root -p <temp-password> 2.ALTER USER 'root'@'localhost' IDENTIFIED BY 'New-Password';
ทดสอบทดสอบ

8

โอเคฉันมีปัญหาเดียวกันและแก้ไขได้ ด้วยเหตุผลบางอย่างสคริปต์ mysql_secure_installation ไม่ทำงานนอกกรอบเมื่อใช้ Homebrew เพื่อติดตั้ง mysql ดังนั้นฉันจึงดำเนินการด้วยตนเอง บน CLI ให้ป้อน :

mysql -u root

ที่ควรพาคุณเข้าสู่ mysql ตอนนี้ทำต่อไปนี้ (นำมาจาก mysql_secure_installation):

UPDATE mysql.user SET Password=PASSWORD('your_new_pass') WHERE User='root';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'
DROP DATABASE test;
FLUSH PRIVILEGES;

ตอนนี้ออกและกลับสู่ mysql ด้วย: mysql -u root -p


1
วิธีนี้ไม่ทำงานสำหรับฉันเพราะ mysql -u root ไม่ได้พาฉันไปที่ mysql prompt มันบอกว่า Access ถูกปฏิเสธสำหรับผู้ใช้ 'root' @ 'localhost' (ใช้รหัสผ่าน: NO)
Nick Vanderbilt

คุณมีการติดตั้ง MySQL ก่อนหน้าในเครื่องนั้นหรือไม่?
Darren Newton

8

ฉันมีปัญหาเดียวกันตอนนี้ หากคุณbrew info mysqlและทำตามขั้นตอนดูเหมือนว่ารหัสผ่านรูทควรจะเป็นnew-passwordถ้าฉันจำได้อย่างถูกต้อง ฉันเห็นสิ่งเดียวกับที่คุณเห็น บทความนี้ช่วยฉันได้มากที่สุด

ปรากฏว่าฉันไม่มีบัญชีใด ๆ ที่สร้างขึ้นสำหรับฉัน เมื่อฉันเข้าสู่ระบบหลังจากทำงานmysqld_safeและไม่ได้select * from user;ถูกส่งกลับแถว ฉันเปิด MySQLWorkbench ด้วยการmysqld_safeรันและเพิ่มrootบัญชีด้วย privs ทั้งหมดที่ฉันคาดไว้ ตอนนี้ใช้ได้ดีสำหรับฉันตอนนี้


7

หากติดตั้ง mysql แล้ว

หยุด mysql อย่างสมบูรณ์

  1. mysql.server stop <- อาจต้องแก้ไขตามเวอร์ชันของคุณ
  2. ps -ef | grep mysql <- รายการกระบวนการด้วย mysql ในชื่อของพวกเขา
  3. kill [PID] <- ฆ่ากระบวนการด้วย PID

ลบไฟล์ คำแนะนำข้างต้นเป็นสิ่งที่ดี ฉันจะเพิ่ม:

  1. sudo find /. -name "*mysql*"
  2. การใช้วิจารณญาณของคุณคือrm -rfไฟล์เหล่านี้ โปรดทราบว่าหลายโปรแกรมมีไดรเวอร์สำหรับ mysql ซึ่งคุณไม่ต้องการลบ ตัวอย่างเช่นอย่าลบเนื้อหาในไดเรกทอรีของการติดตั้ง PHP ทำสิ่งที่ลบในไดเรกทอรี mysql ของตัวเอง

ติดตั้ง

หวังว่าคุณมี homebrew ถ้าไม่ให้ดาวน์โหลด

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

  1. sudo brew update
  2. sudo brew install cmake <- พึ่งพา MySQL, มีประโยชน์
  3. sudo brew install openssl <- พึ่งพา MySQL, มีประโยชน์
  4. sudo brew info mysql <- อ่านผ่านสิ่งนี้ ... มันทำให้คุณเข้าใจว่ากำลังจะเกิดอะไรขึ้นต่อไป
  5. sudo brew install mysql --with-embedded; say done<- ติดตั้ง mysql ด้วยเซิร์ฟเวอร์ในตัว แจ้งให้คุณทราบเมื่อการติดตั้งเสร็จสิ้น (การติดตั้งของฉันใช้เวลา 10 นาที)

ภายหลัง

  1. sudo chown -R mysql /usr/local/var/mysql/ <- mysql ไม่ทำงานสำหรับฉันจนกว่าฉันจะรันคำสั่งนี้
  2. sudo mysql.server start <- อีกครั้งไวยากรณ์ที่แน่นอนอาจแตกต่างกันไป
  3. สร้างผู้ใช้ใน mysql ( http://dev.mysql.com/doc/refman/5.7/en/create-user.html ) อย่าลืมเพิ่มรหัสผ่านสำหรับผู้ใช้รูท

3

ข้อมูลชง mysql

mysql: stable 5.6.12 (bottled)
http://dev.mysql.com/doc/refman/5.6/en/
Conflicts with: mariadb, mysql-cluster, percona-server
/usr/local/Cellar/mysql/5.6.12 (9363 files, 353M) *
  Poured from bottle
From: https://github.com/mxcl/homebrew/commits/master/Library/Formula/mysql.rb
==> Dependencies
Build: cmake
==> Options
--enable-debug
    Build with debug support
--enable-local-infile
    Build with local infile loading support
--enable-memcached
    Enable innodb-memcached support
--universal
    Build a universal binary
--with-archive-storage-engine
    Compile with the ARCHIVE storage engine enabled
--with-blackhole-storage-engine
    Compile with the BLACKHOLE storage engine enabled
--with-embedded
    Build the embedded server
--with-libedit
    Compile with editline wrapper instead of readline
--with-tests
    Build with unit tests
==> Caveats
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.

To connect:
    mysql -uroot

To reload mysql after an upgrade:
    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

เริ่ม mysql บริการ

. ERROR! The server quit without updating PID file (/var/run/mysqld/mysqld.pid).

หรือ mysql -u root

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

ฉันกำลังมองหาวิธีการแก้ปัญหาบางครั้ง แต่ฉันไม่สามารถแก้ปัญหาได้ ฉันลองวิธีแก้ปัญหาหลายอย่างใน stackoverflow.com แต่ก็ไม่ช่วยฉัน


4
ลองใช้sudo chown -R mysql /usr/local/var/mysql/ก่อนที่จะทำงานmysql.server startหากคุณใช้งานmysql.serverในฐานะรูท (เมื่อเริ่มใช้ผู้ใช้รูทเซิร์ฟเวอร์ MySQL จะลดระดับ_mysqlผู้ใช้)
Rarylson Freitas

สวัสดีคุณพบวิธีแก้ปัญหาสำหรับปัญหานี้แล้วหรือยัง?
KcC0

OMG, จำนวนคำถามและ 1,000 คำตอบสำหรับปัญหานี้ ... คิดว่าฉันจะแค่brew install redistbh
Danyal Aytekin

3

TL; DR

เซิร์ฟเวอร์ MySQL อาจไม่ทำงานหลังจากติดตั้งด้วย Brew ลองbrew services start mysqlหรือเพียงแค่mysql.server startถ้าคุณไม่ต้องการให้ MySQL ทำงานเป็นบริการแบ็คกราวน์

เรื่องเต็ม:

ฉันเพิ่งติดตั้ง MySQL (เสถียร) 5.7.17 บน MacBook Pro ใหม่ที่ใช้ Sierra และยังมีข้อผิดพลาดเมื่อทำงานmysql_secure_installation:

Securing the MySQL server deployment.

Enter password for user root: 
Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

พูดว่าอะไรนะ?

ตามข้อมูลการติดตั้งจาก Brew mysql_secure_installationควรแจ้งให้ฉัน ... รักษาความปลอดภัยการติดตั้ง ฉันคิดว่าเซิร์ฟเวอร์ MySQL อาจไม่ทำงานและถูกต้อง วิ่งbrew services start mysqlแล้วmysql_secure_installationทำงานเหมือนจับใจ


1

ลองโดยให้สิทธิ์อนุญาต Command Command ของ mysql


ปัญหาคือฉันไม่สามารถเข้าถึงเซิร์ฟเวอร์ mysql เลยหลังจากการติดตั้งโดยชง ฉันสามารถเริ่มต้นได้ แต่จะไม่ให้ฉันเป็น root โดยมีหรือไม่มีรหัสผ่าน (ดังนั้นฉันไม่สามารถสร้างผู้ใช้รายอื่นหรือจัดการการอนุญาต .. หรือว่าฉันไม่เข้าใจคุณใช่มั้ย
nikola

1

ไม่มีคำตอบข้างต้น (หรือคำตอบใด ๆ ที่ฉันเห็นที่อื่น ๆ ) สำหรับฉันเมื่อใช้การชงด้วย mysql และ yosemite รุ่นล่าสุด ฉันลงเอยด้วยการติดตั้ง mysql เวอร์ชั่นอื่นผ่านทาง Brew

การระบุเวอร์ชั่นที่เก่ากว่าโดยพูด (ตัวอย่าง)

brew install mysql56

ทำงานให้ฉัน หวังว่านี่จะช่วยใครซักคน นี่เป็นปัญหาที่น่าผิดหวังที่ฉันรู้สึกเหมือนติดอยู่ตลอดไป


ใช่มันใช้งานได้ แต่ถ้าคุณต้องการติดตั้ง MySQL 5.7 (ตามที่ทำในปัจจุบันbrew install mysql) คุณสามารถทำตามคำแนะนำในคำตอบของฉันstackoverflow.com/a/33924648/133106
mrucci

1

นี่คือการอัพเดทสำหรับ MySQL 5.7

ทุบตี - รุ่น
GNU ทุบตีรุ่น 4.4.12 (1) - ปล่อย (x86_64-apple-darwin17.0.0)
ลิขสิทธิ์ (C) 2016 มูลนิธิซอฟต์แวร์เสรี, Inc.
สิทธิ์การใช้งาน GPLv3 +: GNU GPL รุ่น 3 หรือใหม่กว่า 

นี่เป็นซอฟต์แวร์ฟรี คุณมีอิสระที่จะเปลี่ยนแปลงและแจกจ่ายต่อได้
ไม่มีการรับประกันตามขอบเขตที่กฎหมายอนุญาต

# ========================================
ชง - รุ่น
Homebrew 1.7.6
Homebrew / homebrew-core (แก้ไข git eeb08; ส่งล่าสุด 2018-09-27)
Homebrew / homebrew-cask (แก้ไข git c9f62; ส่งล่าสุด 2018-09-27)

# ========================================
mysql - รุ่น
mysql Ver 14.14 Distrib 5.7.23 สำหรับ osx10.13 (x86_64) โดยใช้ EditLine wrapper

# ========================================
system_profiler SPSoftwareDataType
ซอฟต์แวร์:

    ภาพรวมซอฟต์แวร์ระบบ:

      รุ่นของระบบ: macOS 10.13.3 (17D47)
      เวอร์ชั่นเคอร์เนล: ดาร์วิน 17.4.0
      ปริมาณการบูต: Macintosh HD
      โหมดการบูต: ปกติ
      ชื่อคอมพิวเตอร์: EdisonMacHomeBj
      ชื่อผู้ใช้: Edison (edison)
      Secure Virtual Memory: Enabled
      การป้องกันความสมบูรณ์ของระบบ: ปิดการใช้งาน
      เวลาตั้งแต่บูต: 6 วัน 23:13
ชงลบ mysql@5.7
ชงล้าง
mv / usr / local / var / mysql /usr/local/var/mysql.bak
ชงติดตั้ง mysql@5.7
rm -rf / usr / local / var / mysql

# ========================================
mysqld - เริ่มต้น
2018-09-28T04: 54: 06.526061Z 0 [คำเตือน] ลงเวลาด้วยค่าเริ่มต้นโดยนัยจะเลิก โปรดใช้ตัวเลือกเซิร์ฟเวอร์ --explicit_defaults_for_timestamp (ดูเอกสารประกอบสำหรับรายละเอียดเพิ่มเติม)
2018-09-28T04: 54: 06.542625Z 0 [คำเตือน] การตั้งค่า lower_case_table_names = 2 เพราะระบบไฟล์สำหรับ / usr / local / var / mysql / ไม่ตรงตามตัวพิมพ์ใหญ่ - เล็ก
2018-09-28T04: 54: 07.096637Z 0 [คำเตือน] InnoDB: สร้างไฟล์บันทึกใหม่ LSN = 45790
2018-09-28T04: 54: 07.132950Z 0 [คำเตือน] InnoDB: การสร้างตารางระบบข้อ จำกัด ที่สำคัญต่างประเทศ
2018-09-28T04: 54: 07.196824Z 0 [คำเตือน] ไม่พบ UUID ที่มีอยู่ดังนั้นเราจึงสันนิษฐานว่านี่เป็นครั้งแรกที่เซิร์ฟเวอร์นี้เริ่มทำงาน การสร้าง UUID ใหม่: 87cf2f10-c2da-11e8-ac2d-ba163df10130
2018-09-28T04: 54: 07.224871Z 0 [คำเตือน] ตาราง Gtid ไม่พร้อมใช้งาน ไม่สามารถเปิดตาราง 'mysql.gtid_executed'
2018-09-28T04: 54: 07.366688Z 0 [คำเตือน] ใบรับรอง CA ca.pem ลงนามด้วยตนเอง
2018-09-28T04: 54: 07.457954Z 1 [หมายเหตุ] รหัสผ่านชั่วคราวถูกสร้างขึ้นสำหรับ root @ localhost: kq3K = JR8; GqZ

# ========================================
mysql_secure_installation -uroot -p "kq3K = JR8; GqZ"
mysql_secure_installation: [คำเตือน] การใช้รหัสผ่านบนอินเตอร์เฟสบรรทัดคำสั่งอาจไม่ปลอดภัย

การรักษาความปลอดภัยการปรับใช้เซิร์ฟเวอร์ MySQL


รหัสผ่านที่มีอยู่สำหรับรูทบัญชีผู้ใช้หมดอายุแล้ว กรุณาตั้งรหัสผ่านใหม่

รหัสผ่านใหม่:

ป้อนรหัสผ่านใหม่:

ปลั๊กอินรหัสผ่านที่ถูกต้องสามารถใช้เพื่อทดสอบรหัสผ่าน
และปรับปรุงความปลอดภัย มันตรวจสอบความแข็งแกร่งของรหัสผ่าน
และอนุญาตให้ผู้ใช้ตั้งรหัสผ่านเหล่านั้นเท่านั้นคือ
ปลอดภัยเพียงพอ คุณต้องการตั้งค่าปลั๊กอินรหัสผ่านที่ถูกต้องหรือไม่

กด y | Y สำหรับใช่คีย์อื่น ๆ สำหรับไม่ใช่: n
การใช้รหัสผ่านที่มีอยู่สำหรับรูท
เปลี่ยนรหัสผ่านสำหรับรูท? ((กด y | Y สำหรับใช่คีย์อื่น ๆ สำหรับไม่): y

รหัสผ่านใหม่:

ป้อนรหัสผ่านใหม่:
โดยค่าเริ่มต้นการติดตั้ง MySQL มีผู้ใช้ที่ไม่ระบุชื่อ
อนุญาตให้ทุกคนเข้าสู่ระบบ MySQL ได้โดยไม่จำเป็นต้องมี
บัญชีผู้ใช้ที่สร้างขึ้นสำหรับพวกเขา สิ่งนี้มีไว้สำหรับ
การทดสอบและเพื่อให้การติดตั้งราบรื่นขึ้น
คุณควรลบออกก่อนที่จะย้ายไปผลิต
สิ่งแวดล้อม

ลบผู้ใช้ที่ไม่ระบุชื่อหรือไม่ (กด y | Y สำหรับใช่คีย์อื่น ๆ สำหรับไม่): y
ความสำเร็จ


โดยปกติรูทควรได้รับอนุญาตให้เชื่อมต่อจากเท่านั้น
'localhost' สิ่งนี้ทำให้มั่นใจได้ว่าใครบางคนไม่สามารถเดาได้
รหัสผ่านรูทจากเครือข่าย

ไม่อนุญาตให้ล็อกอินรูทจากระยะไกล (กด y | Y สำหรับใช่คีย์อื่น ๆ สำหรับไม่): n

 ... ข้าม
โดยค่าเริ่มต้น MySQL มาพร้อมกับฐานข้อมูลชื่อ 'ทดสอบ' ที่
ทุกคนสามารถเข้าถึงได้ สิ่งนี้มีไว้สำหรับการทดสอบเท่านั้น
และควรลบออกก่อนย้ายเข้าสู่การผลิต
สิ่งแวดล้อม


ลบฐานข้อมูลทดสอบและเข้าถึงหรือไม่ (กด y | Y สำหรับใช่คีย์อื่น ๆ สำหรับไม่): n

 ... ข้าม
การโหลดตารางสิทธิ์จะทำให้มั่นใจได้ว่าการเปลี่ยนแปลงทั้งหมด
ทำจนถึงจะมีผลทันที

โหลดตารางสิทธิ์เดี๋ยวนี้หรือไม่ (กด y | Y สำหรับใช่คีย์อื่น ๆ สำหรับไม่): y
ความสำเร็จ

ทุกอย่างเสร็จเรียบร้อย!

เมื่อคัดลอกฐานข้อมูลทั้งหมดจาก "mysql.bak" มันไม่ทำงาน :(
Jahirul Islam Mamun

1

เพียงเพิ่มบางสิ่งในคำตอบก่อนหน้า - เมื่ออัปเกรดจาก MySql 5.6 เป็น MySql 8.0 ฉันทำตามขั้นตอนที่มีให้ที่นี่เพื่อทำการถอนการติดตั้งใหม่ทั้งหมด แต่ฉันได้รับข้อผิดพลาดต่อไปนี้

2019-11-05T07:57:31.359304Z 0 [ERROR] [MY-000077] [Server] /usr/local/Cellar/mysql/8.0.18/bin/mysqld: Error while setting value 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' to 'sql_mode'.
2019-11-05T07:57:31.359330Z 0 [ERROR] [MY-013236] [Server] The designated data directory /usr/local/var/mysql is unusable. You can remove all files that the server added to it.
2019-11-05T07:57:31.359413Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-11-05T07:57:31.359514Z 0 [Note] [MY-010120] [Server] Binlog end

เอาเวลาฉันคิดออก พบเบาะแสที่นี่: https://discourse.brew.sh/t/clean-removal-of-mysql/2251

ดังนั้นกุญแจสำคัญในปัญหาของฉันคือการลบไฟล์ /usr/local/etc/my.cnfหลังจากถอนการติดตั้ง หลังจากนั้นหนึ่งขั้นตอนสุดท้าย MySql ก็เริ่มทำงานได้ในที่สุด


0

ฉันมีปัญหาเดียวกันหลังจากฉันพยายามรีสตาร์ท mysql

ฉันใช้ชื่อแทนสองรายการต่อไปนี้ใน. profile ของฉันเพื่อความสะดวก

alias mysql-stop='launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist'
alias mysql-start='launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist' 

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

หลังจากการค้นหาอย่างรวดเร็วฉันพบสิ่งนี้ ..

http://www.daveoncode.com/2013/02/01/solve-mac-osx-launchctl-nothing-found-to-load-error/

ดังนั้นฉันจึงอัพเดทmysql-startนามแฝงดังนี้

alias mysql-start='launchctl load -w -F ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist'

วิธีนี้แก้ไขปัญหาของฉันซึ่งอาจเป็นประโยชน์สำหรับคุณ


2
Brew ตอนนี้สนับสนุนservicesคำสั่งดังนั้นสิ่งเหล่านี้สามารถถูกแทนที่ด้วยbrew services stop mysqlและbrew services start mysqlตามลำดับ
devstuff

0

"Base-Path" สำหรับ Mysql จะถูกเก็บไว้/etc/my.cnfซึ่งไม่ได้รับการอัพเดตเมื่อคุณทำการอัพเกรด เพียงแค่เปิดและเปลี่ยนค่าของฐาน

ตัวอย่างเช่นเปลี่ยนสิ่งนี้:

[mysqld]
basedir=/Users/3st/homebrew/Cellar/mysql/5.6.13

เพื่อชี้ไปที่เวอร์ชันใหม่:

[mysqld]
basedir=/Users/3st/homebrew/Cellar/mysql/5.6.19

รีสตาร์ท mysql ด้วย:

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