问题:无法连接到MySQL服务器
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
解决方法:
- 检查服务是否运行:sudo systemctl status mysql
- 启动服务:sudo systemctl start mysql
- 检查端口是否监听:netstat -tulnp | grep 3306
- 检查配置文件中的绑定地址:/etc/mysql/my.cnf
或/etc/my.cnf
问题:访问被拒绝
ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: YES)
解决方法:
- 重置root密码:
sudo systemctl stop mysql
sudo mysqld_safe --skip-grant-tables &
mysql -u root
然后执行:
sql
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
问题:查询缓慢或服务器负载高
解决方法:
- 优化查询:使用EXPLAIN
分析慢查询
- 启用慢查询日志:
ini
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
- 调整缓冲池大小:innodb_buffer_pool_size
(通常设为物理内存的50-70%)
问题:无法连接到PostgreSQL服务器
psql: could not connect to server: Connection refused
解决方法:
- 检查服务状态:sudo systemctl status postgresql
- 检查pg_hba.conf
文件中的认证设置
- 检查postgresql.conf
中的listen_addresses
设置
问题:数据库因磁盘空间不足而停止工作
解决方法:
- 清理WAL日志:pg_archivecleanup
- 使用VACUUM FULL
回收空间(注意这会锁表)
- 考虑表分区或归档旧数据
解决方法:
- 调整shared_buffers
(通常设为内存的25%)
- 优化work_mem
设置
- 使用EXPLAIN ANALYZE
分析查询计划
问题:MongoDB无法启动
解决方法:
- 检查日志:/var/log/mongodb/mongod.log
- 修复数据文件(如果异常关闭):
mongod --repair --dbpath /var/lib/mongodb
- 检查磁盘空间是否足够
问题:认证失败
解决方法:
- 创建管理员用户:
javascript
use admin
db.createUser({
user: "admin",
pwd: "password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})
- 启用认证:在/etc/mongod.conf
中设置security.authorization: enabled
MySQL备份:
mysqldump -u username -p database_name > backup.sql
MySQL恢复:
mysql -u username -p database_name < backup.sql
PostgreSQL备份:
pg_dump -U username -d database_name -f backup.sql
MongoDB备份:
mongodump --db database_name --out /backup/path
mytop
, pt-query-digest
, MySQL Enterprise Monitorpg_top
, pgBadger
, pgAdmin
mongostat
, mongotop
, Ops Managersystemctl status service_name
/var/log/mysql/error.log
/var/log/postgresql/postgresql-[version]-main.log
/var/log/mongodb/mongod.log
df -h
free -m
top
或htop
通过系统化的方法识别和解决这些常见问题,可以确保Linux系统上的数据库服务保持稳定和高性能运行。