MySQL sẽ không bắt đầu!


12

Tôi đang gặp lỗi này khi cố gắng đăng nhập vào MySQL từ dòng lệnh:

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

Tôi nghĩ điều này có nghĩa là MySQL chưa được bắt đầu. Vì vậy, tôi cố gắng để bắt đầu nó:

sudo /etc/init.d/mysql start

và tôi nhận được tin nhắn này:

* Starting MySQL database server mysqld [fail] 

Tôi tìm ở đâu / tôi phải làm gì để bắt đầu MySQL? Tôi đang chạy Ubuntu 8.04 và cài đặt MySQL thông qua apt-get. Tôi đã có thể khởi động nó và sử dụng nó một vài lần vì vậy tôi không biết tại sao nó lại ngừng hoạt động.

Cập nhật: Khi chạy trạng thái sudo /etc/init.d/mysql tôi nhận được thông báo:

* MySQL is stopped.

Cập nhật # 2: Các tệp nhật ký của tôi (/var/log/mysql.log & /var/log/mysql.err) trống (nếu đây là những tệp phù hợp)


Điều gì xảy ra khi bạn sudo /etc/init.d/mysql status
emgee

Câu trả lời:


10

Trên Ubuntu 12.04, tôi đã gặp vấn đề tương tự sau khi thay đổi kích thước bộ đệm trong tệp /etc/mysql/my.cnf, tôi nghĩ rằng tôi đã mang đi một chút. Dù sao, sau khi cố gắng thay đổi chúng trở lại cài đặt mặc định, MySQL vẫn không khởi động.

Tôi đã thử một số phương pháp khác nhau để giải quyết nó, tôi đã nhận thấy rằng /var/run/mysql/mysql.sock bị thiếu. Đây có thể là một vấn đề vì vậy bạn có thể kiểm tra ở đó và nếu nó bị thiếu, bạn có thể thay thế bằng cách thực hiện như sau:

sudo touch /var/run/mysql/mysql.sock
sudo chown mysql /var/run/mysql/mysql.sock

Điều này KHÔNG khắc phục vấn đề cho tôi! Nhưng nó có thể cho một số.

Những gì tôi phải làm là cài đặt lại hoàn toàn MySQL, để làm điều này, bạn sẽ cần sử dụng lệnh sudo. Các bước để loại bỏ hoàn toàn và cài đặt lại MySQL như sau:

Xóa MySQL

sudo apt-get --purge remove mysql-server
sudo apt-get --purge remove mysql-client
sudo apt-get --purge remove mysql-common

Tùy chọn bạn có thể sử dụng năng khiếu, bằng cách thay thế apt-get --purge bằng năng khiếu

Dọn dẹp

sudo apt-get autoremove
sudo apt-get autoclean

Xóa thư mục MySQL

sudo rm -rf /etc/mysql

Cài đặt MySQL

sudo apt-get install mysql-server mysql-client

Bây giờ MySQL sẽ chạy, bạn có thể kiểm tra điều này bằng cách làm như sau:

sudo service mysql status

Bạn nên thấy

mysql start/running, process xxxxx

Hy vọng điều này sẽ giúp và nghĩ rằng tôi có thể thêm sau khi thực hiện tất cả các cơ sở dữ liệu và bảng của mình nếu vẫn có sẵn, tuy nhiên tôi đã phải tạo lại người dùng và mật khẩu cho các cơ sở dữ liệu đó.

Lưu ý: Nếu bạn đã có phần mở rộng mysql cho php, bạn cũng sẽ cần phải cài đặt lại phần này.

sudo apt-get install php5-mysql

Điều này hiệu quả với tôi nhưng tôi đã phải đổi nó thành: sudo touch /var/run/mysqld/mysqld.sockvà tôi đã tìm thấy điều này từ cuối /var/log/syslog (ví dụ: thay đổi thành mysqld)
trình viên

Là nó /var/run/mysqldhay /var/run/mysql?
CMCDragonkai

chạm vào tệp sock là một ý tưởng tồi - bạn đã tạo một tệp thông thường, khi đó thực sự là một ổ cắm, đó là một loại tệp đặc biệt.
Criggie

3

CẢNH BÁO: Điều này rất nguy hiểm, mysql của bạn sẽ KHÔNG an toàn và bất kỳ ai cũng có thể kết nối, chỉnh sửa, v.v. các bảng của bạn, không để máy chủ của bạn chạy bằng lệnh này.

Hãy thử khởi động nó ở chế độ an toàn: /usr/local/mysql/bin/safe_mysqld --user=mysql --skip-grant-tables

Nếu điều này hoạt động thì có thể có vấn đề với information_schema hoặc (các) bảng mysql của bạn. Nếu nó không hoạt động hơn thì có gì đó không ổn với cài đặt của bạn.


1
Điều này là tốt, nó cung cấp cho bạn các lỗi chi tiết trong syslog. Lệnh đã thay đổi, trên Ubuntu 12.04, đó làsudo /usr/bin/mysqld_safe --user=mysql --skip-grant-tables
newz2000

3

Kiểm tra các tệp nhật ký của bạn như trong các câu trả lời khác. Ngoài ra, hãy kiểm tra xem bạn có đủ (hoặc bất kỳ dung lượng đĩa) không. MySQL có thể hành xử theo cách này trên một phân vùng trống.

df -h

Nếu không phải vậy, hãy xem tài liệu của MySQL về gỡ lỗi máy chủ . Của họ myisamchk(nếu bạn đang sử dụng MyISAM) đặc biệt hữu ích.


3

Gần đây tôi cũng gặp vấn đề này sau khi cập nhật Ubuntu. Chưa chắc chính xác vấn đề là gì. Một điều lo lắng đã làm việc lúc này để chạy mysql là:

sudo aa-complain /etc/apparmor.d/*mysql*

Điều đó làm cho nó hoạt động, chỉ ra rằng apparmor đã ngăn mysql chạy và giải thích lý do tại sao các bản ghi trống cũng có thể: mysql không được phép chạy.

Đây vẫn là một vấn đề kỳ lạ, vì cho đến nay không có "khiếu nại" nào từ đây /var/log/apparmorvà mục kiểm toán duy nhất trong kern.log là từ việc chuyển hồ sơ sang chế độ khiếu nại.

Lưu ý rằng khi thực hiện điều này, tôi cũng đã thêm một /etc/apparmor.d/local/usr.sbin.mysqltệp (trống) vì lệnh aa-phàn nàn đã phàn nàn về việc không tìm thấy tệp này.


Cảm ơn rât nhiều! Sau khi đến gần để xé tóc tôi ra, cuối cùng nó đã sửa nó.
Oledit

3

Tôi gặp vấn đề tương tự với giọt Digital Ocean 512 MB của tôi.

Hóa ra là do không đủ bộ nhớ.

Một giải pháp tức thời là khởi động lại các dịch vụ khác để giải phóng bộ nhớ, vd.

sudo service apache2 restart

Sau đó, hy vọng, với đủ bộ nhớ, bạn sẽ có thể khởi động lại mysql

sudo service mysql restart

Giải pháp lâu dài là lấy thêm RAM hoặc tạo bộ nhớ trao đổi .


2

Hãy xem các tập tin nhật ký của bạn. Trên Debian ít nhất, bạn nhận được đăng nhập mysql * /var/log.


3
mysql.err và mysql.log đều trống
Andrew

1

Có vấn đề tương tự, hóa ra giải pháp đang nhìn thẳng vào mặt tôi. Ổ đĩa đã đầy. Bạn không nhận được nhật ký vì không có nơi nào để viết chúng .....


0

Vấn đề tương tự đã làm tôi khó chịu từ lâu trên VPS kỹ thuật số Ubuntu 12.04 với mysql 5.6 được cài đặt từ PPA. Các triệu chứng là tệp mysql.sock tại /var/run/mysqld/mysql.socksẽ bị xóa nhưng không bao giờ được tạo lại, vì vậy tôi phải chạy thủ công các lệnh sau mỗi khi cập nhật mysql hoặc máy chủ khởi động lại:

sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock

Đây là từ câu trả lời của Kyle C (ngoại trừ với mysqld thay vì mysql). Cuối cùng, tôi đã hạ cấp xuống mysql 5.5, khi bạn thường thực hiện một sudo apt-get install mysql-serverlệnh. Tuy nhiên nó không thẳng tiến nên đây là điều tôi phải làm:

# Manually get mysql running if it is not
sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock
sudo service mysql start

# take a dump of all databases 
# we are going to remove the mysql files so don't skip this)
mysqldump -u root -p > all-databases.sql

# Completely remove mysql
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean

# Remove mysql 5.6 from debs (otherwise it will reinstall 5.6)
rm /etc/apt/sources.list.d/ondrej-(mysql something please check)

# remove a flag that would prevent the installation
# because it is seen as a downgrade
sudo rm /var/lib/mysql/debian-5.6.flag

# I had to remove the mysql files as well
# reference http://ubuntuforums.org/showthread.php?t=1998260&page=3
rm -rf /var/lib/mysql
rm -rf /etc/mysql*

# Install mysql
sudo apt-get install mysql-server mysql-client mysql-common php5-mysql

# manually update the all-databases.sql file and 
# remove all STATS_PERSISTENT clauses on table creation statments

# re import the databses
mysql -u root -p < all-databases.sql

# restart apache
sudo service apache2 restart

# at this point my wordpress site stated error connecting to database.
# This was resolved by logging into mysql and running:
FLUSH PRIVILEGES

Hy vọng điều này sẽ giúp người khác có cùng nỗi đau.


0

con số này có thể giúp đỡ người khác ... vì vậy nó ở đây.

Tôi muốn di chuyển mysql 5.5 (mặc định của Ubuntu) sang 5.7 mới
(muốn chơi arround với loại JSON gốc mới)

Tôi đã làm theo hướng dẫn để cài đặt phiên bản mới nhất ....
nhưng MySQL không muốn bắt đầu.

Đã dành khá nhiều thời gian để tìm kiếm và sau đó tìm thấy dòng này trong /var/log/mysql/errors.log:

unknown variable 'key_buffer=16M'

và đó là thứ được đặt trong /etc/mysql/my.cnfđó, trong quá trình nâng cấp, tôi đã chọn giữ.

Vì vậy, khá dễ dàng sau đó:
thay thế phiên bản của tôi my.cnfbằng my.cnf.dpkg-distcùng một thư mục ...

Sau đó phải chạy

sudo mysql_upgrade -u root -p sudo service mysql restart

và bây giờ MySQL đã sao lưu và chạy


0

Tìm thấy một biến thể khác về những gì có thể sai. Tôi đã di chuyển thư mục dữ liệu, và hóa ra tôi đã quên chown thư mục cho người dùng mysql, nó cũng không thành công khi không có đầu ra nào. Rõ ràng là sai trong nhận thức muộn, nhưng việc thiếu thông báo lỗi làm cho mọi vấn đề tầm thường khó tìm thấy.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.