一、安装过程中常见问题及解决方法
sudo apt install mysql-server时出现“E: Unable to locate package mysql-server”错误,主要原因是软件源未更新或未添加MySQL官方源。
sudo apt update;② 若更新后仍无法解决,检查/etc/apt/sources.list文件是否包含Ubuntu官方源(如Ubuntu 20.04的deb http://archive.ubuntu.com/ubuntu focal main restricted),修改后再次运行sudo apt update;③ 若系统自带源版本过老,可添加MySQL官方APT仓库:下载配置包wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb,安装后选择MySQL版本,再运行sudo apt update安装。libmysqlclient-dev等依赖包。
sudo apt --fix-broken install自动修复依赖关系,再重新安装MySQL。sudo systemctl start mysql失败,可能是配置文件错误或端口冲突。
sudo tail -n 50 /var/log/mysql/error.log;② 检查配置文件/etc/mysql/mysql.conf.d/mysqld.cnf中的bind-address(确保为0.0.0.0允许远程连接)和port(默认3306)设置是否正确;③ 检查3306端口是否被其他服务占用:sudo netstat -tuln | grep 3306。二、连接问题及解决方法
mysql -u root -p时提示“Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’”,通常因MySQL服务未启动或socket文件路径错误。
sudo systemctl start mysql;② 若socket文件不存在,创建目录并修改权限:sudo mkdir -p /var/run/mysqld,sudo chown mysql:mysql /var/run/mysqld,再重启服务;③ 若问题持续,检查配置文件中的socket路径是否与连接命令一致(如mysql -u root -p -S /path/to/mysql.sock)。mysql -u root -p;② 授权远程访问:GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;(将username、password替换为实际值);③ 刷新权限:FLUSH PRIVILEGES;;④ 检查配置文件bind-address是否设置为0.0.0.0(允许所有IP连接),修改后重启服务。sudo systemctl stop mysql,启动安全模式:sudo mysqld_safe --skip-grant-tables &,无密码登录后执行USE mysql; UPDATE mysql.user SET authentication_string = PASSWORD('newpassword') WHERE User = 'root'; FLUSH PRIVILEGES;,重启服务;② 若认证插件问题,修改用户插件:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword'; FLUSH PRIVILEGES;。sudo ufw allow 3306/tcp,然后检查状态:sudo ufw status确认端口已开启。三、权限问题及解决方法
CREATE DATABASE、GRANT等命令时提示“Access denied”,因当前用户无足够权限。
mysql -u root -p),执行授权命令(如GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost'; FLUSH PRIVILEGES;),或直接修改用户权限:UPDATE mysql.user SET Grant_priv = 'Y' WHERE User = 'username'; FLUSH PRIVILEGES;。/var/lib/mysql目录权限不属于mysql用户。
sudo chown -R mysql:mysql /var/lib/mysql,确保MySQL用户对数据目录有读写权限。四、配置问题及解决方法
/etc/mysql/mysql.conf.d/mysqld.cnf,在[client]和[mysqld]段添加:default-character-set=utf8,重启服务使设置生效。bind-address设置为127.0.0.1(仅本地访问)。
/etc/mysql/mysql.conf.d/mysqld.cnf,将bind-address = 127.0.0.1改为bind-address = 0.0.0.0,重启MySQL服务。sudo netstat -tuln | grep 3306,若被占用,停止占用服务或修改MySQL端口(如改为3307):编辑/etc/mysql/mysql.conf.d/mysqld.cnf中的port项,修改后重启服务。五、性能与维护问题
mysqlcheck工具修复:sudo mysqlcheck --all-databases --auto-repair(修复所有数据库),或针对特定数据库:sudo mysqlcheck -u root -p database_name --auto-repair。df -h,清理无用文件(如sudo apt autoremove删除旧软件包、sudo apt clean清理APT缓存),或迁移数据到更大磁盘。sudo tail -f /var/log/mysql/error.log,根据日志中的具体错误信息(如“InnoDB: Unable to lock ./ibdata1”)进一步排查。