การติดตั้ง MySQL ของฉันไม่ทำงาน วิธีการกำหนดค่าใหม่อย่างสมบูรณ์?


20

นี่คือคำสั่งต่อไปนี้ที่ฉันได้ทำ

$ sudo service mysql start
mysql start/running

$ mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

$ aptitude search mysql |grep ^i
i   libapache2-mod-auth-mysql       - Module Apache 2 pour l'authentification vi
i   libdbd-mysql-perl               - Perl5 database interface to the MySQL data
i   libmysqlclient16                - MySQL database client library             
i   mysql-client-5.1                - MySQL database client binaries            
i   mysql-client-core-5.1           - MySQL database core client binaries       
i   mysql-common                    - MySQL database common files, e.g. /etc/mys
i   mysql-server-5.1                - MySQL database server binaries and system 
i   mysql-server-core-5.1           - MySQL database server binaries            
i   php5-mysql                      - MySQL module for php5                     

alm - ค้นหา mysql.log ของคุณcat /var/log/mysql.logและแก้ไขคำตอบของคุณด้วยไฟล์นี้ ....
hhlp

5
ฉันชอบวิธีที่คุณใช้ grep ^ i ที่นั่น ฉลาดพอสมควร
Luis Alvarado

มันทำอะไรกันแน่? ความถนัดเป็นเครื่องมือในการติดตั้ง
user4951

@JimThio นั่นคือการค้นหาแพคเกจติดตั้งที่เกี่ยวข้องกับคำถามนี้
Reinstate Monica - ζ--

คำตอบ:


16

ก่อนทำการติดตั้งใหม่ให้ตรวจสอบ / var / log / mysql เพื่อดูไฟล์บันทึกซึ่งอาจมีเงื่อนงำว่าทำไม mysql ไม่ทำงาน หากไม่มีล็อกไฟล์ไปยังไฟล์อาจไม่เปิดใช้งานในการกำหนดค่าของคุณ: กำหนดค่าบันทึกข้อผิดพลาด Mysql

หากต้องการติดตั้งแพคเกจใหม่ให้ตรวจสอบเวอร์ชั่นที่ติดตั้งด้วย

dpkg -l|grep mysql-server

จากนั้นสำหรับการใช้งานเวอร์ชัน 5.7

sudo apt-get install mysql-server-5.7 --reinstall

หากสิ่งนี้ไม่อนุญาตให้คุณกำหนดค่าแพคเกจที่คุณสามารถใช้ได้

sudo dpkg-reconfigure mysql-server-5.7

sudo dpkg-reconfigure mysql-server-5.1 ได้ทำการหลอกลวงสำหรับฉันเมื่อฉันอัพเกรดจาก 11.10 เป็น 12.04 ฉัน mysqld จะไม่เริ่มทำงานและฉันถูกบังคับให้ sudo mysqld ด้วยตนเอง
Hanynowsky

7

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

ในการติดตั้ง MySQL สามารถระบุตำแหน่งที่เราจะมีซ็อกเก็ตสำหรับการเชื่อมต่อท้องถิ่น เมื่อทำการอัปเดตไม่ใช่เรื่องแปลกที่จะเห็นข้อผิดพลาด "ไม่สามารถเชื่อมต่อกับซ็อกเก็ตเซิร์ฟเวอร์ MySQL ท้องถิ่น" เรามาดูวิธีแก้ปัญหานี้กัน

ข้อผิดพลาดมีลักษณะดังนี้:

Mysql-u root-p
Enter password:
ERROR 2002 (HY000): Can not connect to local MySQL server-through socket '/ tmp / mysql.sock' (2)

ผ่านpsเราสามารถดูว่ามีการระบุโดยพารามิเตอร์และสถานที่ที่มันอยู่:

# ps -fea | grep mysqld
mysql    17661 14003  1 Feb19 ?        00:24:59 /usr/local/mysql-percona/libexec/mysqld --basedir=/usr/local/mysql-percona --datadir=/var/data/mysql/datadir/data --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log
root     23790  7840  0 09:25 pts/0    00:00:00 grep mysqld

ในกรณีนี้เราจะเห็นสิ่ง/var/lib/mysql/mysql.sockต่อไปนี้ หากไม่พบเป็นพารามิเตอร์ควรดูในส่วน mysqld ของ/etc/my.cnfเพื่อค้นหาพารามิเตอร์:

grep socket /etc/my.cnf
socket=/var/lib/mysql/mysql.sock

หากเรารู้ว่าอยู่ที่ไหนเราจำเป็นต้องแก้ไขไฟล์เดียวกัน ( /etc/my.cnf) และเพิ่มส่วนลูกค้าซ็อกเก็ตพารามิเตอร์:

[client]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock

1
นั่นคือสิ่งที่ฉันจะนำไปเป็นคำตอบ ฉันรู้แล้วว่านี่เป็นคำตอบที่ถูกต้องสำหรับปัญหาที่เกี่ยวข้องเกือบทั้งหมดเช่นนี้ จะ +1 คุณเมื่อฉันได้รับความสามารถอีกครั้ง
Luis Alvarado

ขอบคุณสำหรับคำอธิบายอย่างละเอียด! ในกรณีของฉันแม้ว่าฉันจะระบุซ็อกเก็ตใน my.cnf มันไม่ได้ฟังมัน (params ที่แสดงใน 'ps' ว่างเปล่าและไม่สามารถเชื่อมต่อได้การแก้ปัญหา: เพิ่ม 'protocoll = tcp' ในส่วนไคลเอนต์ใน my.cnf ถึง บังคับใช้ tcp และไม่ใช้ซ็อกเก็ต
Tapper

2

สำหรับผู้ชมหลัง:
ฉันมาถึงข้อผิดพลาดที่คล้ายกันเมื่อฉันล้มเหลวในการอัพเกรดแพ็คเกจเซิร์ฟเวอร์ mysql-แต่ฉันพบว่าสิ่งนี้แก้ไขปัญหาของฉันได้ เมื่อไม่ได้ผลลองsudo apt-get install -f sudo apt-get purge mysql*ตอนนี้คุณสามารถติดตั้ง mysql-server ใหม่ได้แล้ว


1
โปรดทราบว่า sudo apt-get purge mysqlจะไม่รักษาฐานข้อมูลของคุณไว้
Nelson Owalo

1

หนึ่งในปัญหาที่ฉันพบคือรู้ว่าฉันกำลังประสบปัญหาเวอร์ชันใด นี่เป็นความคิดที่เรียบร้อย:

$ aptitude search mysql |grep ^i

แต่นี่คือสิ่งที่ฉันพบว่ามีความสำคัญในปัญหา:

$ apt-get --reinstall install mysql-server-5.x

(โดยที่ x คือรุ่นหากคุณไม่ได้เพิ่มสิ่งนี้คุณอาจทำงานผิดพลาดได้


0

สิ่งนี้ใช้ได้สำหรับฉัน

sudo apt purge mysql*
sudo apt autoremove
sudo apt autoclean
sudo apt install mysql-server

ลักษณะ

1) คำสั่งแรกจะลบทุกสิ่งที่เกี่ยวข้องกับ MySQL ด้วยไฟล์กำหนดค่าของพวกเขา

2) อันที่สองจะลบแพ็คเกจที่ไม่ต้องการอีกต่อไป


refrences [!]:

1) DigitalOcean

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