Ubuntu 16.04系统中MySQL服务无法启动问题求助
Hey there, glad you already sorted out the AppArmor issue—let's get that MySQL server back up and running. The systemctl error you're seeing is just a high-level notice; we need to dig into the specific failure details first.
Step 1: Pull the Full Error Context
First, run this command to see exactly why the service is failing (the -l flag shows full log lines):
systemctl status mysql.service -l
Or check the system journal for more granular clues:
journalctl -xe | grep mysql
MySQL's own error log is usually the most helpful—peek at it with:
cat /var/log/mysql/error.log
Look for lines marked ERROR or FATAL—these will point straight to the root cause.
Step 2: Troubleshoot Common Post-Update Issues
Based on Ubuntu 16.04 + EC2 + MySQL post-apt-update scenarios, here are the most likely fixes:
A. Configuration File Syntax Errors
Apt updates sometimes overwrite or tweak MySQL config files (like /etc/mysql/my.cnf or files under /etc/mysql/mysql.conf.d/). To check for syntax blunders:
mysqld --help --verbose 2>&1 | grep -A 1 "ERROR"
If you spot a syntax error, make a backup of the file first (cp /etc/mysql/my.cnf /etc/mysql/my.cnf.backup) then edit and fix the problematic line.
B. Broken Data Directory Permissions
Updates can reset ownership or permissions on MySQL's data directory (/var/lib/mysql). Check the current setup:
ls -ld /var/lib/mysql
The directory should be owned by mysql:mysql. If not, fix it with:
sudo chown -R mysql:mysql /var/lib/mysql sudo chmod 750 /var/lib/mysql
Also, double-check your AppArmor fix by restarting that service first:
sudo systemctl restart apparmor
Then try starting MySQL again.
C. Port 3306 is Already in Use
Sometimes a leftover MySQL process or another service grabs the default port. Check with:
sudo netstat -tulpn | grep 3306
If you see a process listed, kill it (replace PID with the actual process ID):
sudo kill -9 PID
Or edit your MySQL config to use a different port (look for the port directive in /etc/mysql/my.cnf).
D. Corrupted Installation or Missing Dependencies
If none of the above works, try reinstalling MySQL to fix broken files or missing dependencies:
sudo apt-get remove --purge mysql-server mysql-client mysql-common sudo apt-get autoremove sudo apt-get autoclean sudo apt-get install mysql-server
Important: This will wipe your databases—run sudo mysqldump -u root -p --all-databases > all_databases.sql to backup everything before proceeding.
Step 3: Retry Starting MySQL
After applying the fix that matches your error, start the service again:
sudo systemctl start mysql
If it works, enable it to auto-start on boot:
sudo systemctl enable mysql
内容的提问来源于stack exchange,提问作者Rigtopa

