问题:无法连接到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, pgAdminmongostat, mongotop, Ops Managersystemctl status service_name/var/log/mysql/error.log/var/log/postgresql/postgresql-[version]-main.log/var/log/mongodb/mongod.logdf -hfree -mtop或htop通过系统化的方法识别和解决这些常见问题,可以确保Linux系统上的数据库服务保持稳定和高性能运行。