Debian MariaDB常见问题及解决方案
mysql -u root -p登录时提示“ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’”或密码为空但无法登录。unix_socket)限制了本地登录。sudo systemctl stop mariadb
sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
在MariaDB命令行中执行:USE mysql;
UPDATE user SET authentication_string=PASSWORD('新密码') WHERE user='root';
FLUSH PRIVILEGES;
退出后重启服务:sudo systemctl restart mariadb。unix_socket插件,需更改为无插件认证。UPDATE mysql.user SET plugin='' WHERE User='root';
FLUSH PRIVILEGES;
bind-address = 127.0.0.1),未授权远程IP访问。/etc/mysql/mariadb.conf.d/50-server.cnf,将bind-address改为0.0.0.0(允许所有IP)或指定远程IP。sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
# 找到bind-address = 127.0.0.1,修改为:
bind-address = 0.0.0.0
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
sudo ufw allow 3306/tcp
sudo systemctl status mariadb
journalctl -xe | grep mariadb
ib_logfile*、aria_log*)损坏,删除后重启服务。sudo rm -rf /var/lib/mysql/ib_logfile*
sudo rm -rf /var/lib/mysql/aria_log*
sudo systemctl restart mariadb
sudo apt purge mariadb-*
sudo apt autoremove
sudo apt install mariadb-server
/etc/mysql/mariadb.conf.d/50-server.cnf,优化以下参数(根据服务器内存调整):innodb_buffer_pool_size = 2G # 建议为系统内存的50%-80%
key_buffer_size = 512M # MyISAM索引缓冲区
max_connections = 200 # 最大并发连接数
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2 # 执行时间超过2秒的查询视为慢查询
OPTIMIZE TABLE整理碎片,使用EXPLAIN分析查询计划。sudo apt purge mariadb-*
sudo apt autoremove
sudo rm -rf /etc/mysql
sudo rm -rf /var/lib/mysql
sudo apt update
sudo apt install mariadb-server
latin1)。/etc/mysql/mariadb.conf.d/50-server.cnf,添加以下配置:[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
[client]
default-character-set = utf8mb4
ALTER DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
sudo apt update
libaio1等库,手动安装。sudo apt install libaio1
/etc/apt/sources.list.d/mariadb.list文件正确(参考MariaDB官方文档)。