Ubuntu22安装MySQL Server8初始设置root无法登录且改密失败
问题原因
Ubuntu 22.04 软件源内置的 MySQL Server 8 安装完成后,默认对root@localhost用户使用auth_socket认证插件,而非传统的密码认证:该插件会校验连接发起者的系统用户名,只有系统root用户可以通过本地socket无密码登录MySQL的root账号,普通用户直接调用mysql/mysql_secure_installation命令都会被拒绝访问。
你之前尝试的两种改密方案失效,各有明确原因:
- init-file方案失效:你将init脚本存放在
/home/me路径下,Ubuntu普通用户家目录默认权限为750,运行MySQL服务的mysql用户没有该目录的访问权限,根本读不到你写的改密脚本,ALTER语句从未被执行。 - skip-grant-tables方案失效:
- 你直接调用
mysqld命令启动服务,没有走systemd服务配置,/var/run/mysqld目录不会被自动创建,才会出现sock文件找不到的报错; - 手动创建目录后连接到的是手动启动的异常实例,没有正常加载权限表配置,执行改密语句自然返回0 rows affected,密码修改不会持久化到系统服务启动的MySQL实例中。
- 你直接调用
正确操作步骤
- 先清理所有残留的MySQL进程,避免多实例冲突:
sudo pkill mysqld # 确认无残留进程,无输出代表清理完成 ps aux | grep mysqld | grep -v grep
- 通过systemd正常启动MySQL服务:
sudo systemctl start mysql # 确认服务状态为active (running) sudo systemctl status mysql
- 用系统root权限登录MySQL(默认配置下无需密码):
sudo mysql -u root
- 登录成功后,按需修改root用户的认证方式和密码:
如果需要支持密码登录(任意系统用户输入正确密码即可登录),执行以下语句:
-- 如果需要兼容旧客户端,用mysql_native_password插件 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你设置的新密码'; -- 如果不需要兼容旧客户端,可以用MySQL8默认的caching_sha2_password插件,安全性更高 -- ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '你设置的新密码'; FLUSH PRIVILEGES; exit;
- 验证配置:
- 直接执行
mysql_secure_installation,输入刚才设置的密码即可正常进入安全配置流程; - 执行
mysql -u root -p,输入新密码即可正常登录,无需加sudo。
可选优化建议
如果仅在本地管理数据库,不需要用密码登录root账号,无需修改认证插件,每次登录时加sudo mysql -u root即可,auth_socket认证方式不依赖密码,安全性更高。不建议开放root用户的远程访问权限,远程管理请单独创建权限受限的普通用户。
内容的提问来源于stack exchange,提问作者cuneyttyler
相关产品推荐
相关产品推荐

