Ubuntu 18.04下无需sudo使用MySQL root账户的配置求助
嘿,这个问题我太熟了——Ubuntu 18.04 自带的 MySQL 默认用了个叫 auth_socket 的插件来验证 root 用户,这就是为啥你必须加 sudo 才能登进去的原因。这个插件不认密码,只认系统用户身份,所以普通用户直接输密码肯定被拒。来,跟着我一步步解决:
解决 Ubuntu 18.04 下无需 sudo 连接 MySQL 的问题
1. 先通过 sudo 进入 MySQL 控制台
先按你之前能成功的方式登录:
sudo mysql -u root -p
输入你的 root 密码后进入命令行界面。
2. 确认当前的认证插件
执行这条 SQL 看看 root 用户的认证方式:
SELECT user, plugin FROM mysql.user WHERE user = 'root';
你会看到 plugin 列显示的是 auth_socket,这就是问题根源。
3. 把认证方式改成密码验证
执行下面的 SQL 语句,把 root 用户的认证插件换成 mysql_native_password,同时设置(或重置)你的密码(把 your_secure_password 换成你自己的密码):
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_secure_password';
4. 刷新权限让修改生效
FLUSH PRIVILEGES;
5. 测试普通用户连接
输入 exit 退出 MySQL,然后直接用普通命令登录:
mysql -u root -p
输入你刚才设置的密码,应该就能顺利进入了!
针对 MySQL Workbench 和 phpMyAdmin 的额外配置
- MySQL Workbench:创建连接时,确保主机填
localhost,用户名是root,密码填你刚设置的新密码,别勾选不必要的 SSH 隧道选项,保存后测试连接应该就正常了。 - phpMyAdmin:如果之前连不上,打开
/etc/phpmyadmin/config.inc.php文件,找到以下配置项,确保密码和你设置的一致:
$cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = 'your_secure_password'; $cfg['Servers'][$i]['auth_type'] = 'password';
修改后保存,重启 Apache 服务:
sudo systemctl restart apache2
这样操作完,不管是命令行普通登录,还是 Workbench、phpMyAdmin 都能正常连接 MySQL 了。
内容的提问来源于stack exchange,提问作者David NIWEWE
相关产品推荐
相关产品推荐

