启动MariaDB无报错但状态显示root@localhost访问拒绝求助
解决MariaDB启动后status报错Access denied for user 'root'@'localhost' (using password: NO)
环境信息
- MariaDB版本:10.3.38
- Azure云服务器Ubuntu系统版本:20.04
错误原因澄清
这个错误不是启动MariaDB服务需要输入密码,而是systemctl status mariadb在检查服务状态时,默认尝试以无密码的root用户连接数据库,但当前MariaDB的root用户已设置密码或采用了socket认证(Ubuntu 20.04上的MariaDB默认用unix_socket认证),导致连接失败,所以status输出中会显示该错误,但实际上服务大概率已经正常启动。
解决步骤
1. 确认服务是否真的运行
执行以下命令查看MariaDB进程:
ps aux | grep mariadb
如果能看到mariadb相关的进程,说明服务已正常启动,status里的错误只是状态检查环节的连接问题,不影响服务使用。
2. 正确登录MariaDB验证
根据root用户的认证方式选择登录命令:
- 默认unix_socket认证:直接执行
sudo mariadb - 已改为密码认证:执行
然后输入设置的root密码即可登录。sudo mariadb -u root -p
3. 修复status检查的错误(可选)
如果不想status输出中显示该错误,可按以下操作调整:
- 编辑MariaDB主配置文件:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf - 在
[mysqld]段落中添加或确保存在以下配置:user=mysql - 保存文件后重启服务:
sudo systemctl restart mariadb
4. 确认root用户认证方式(排查用)
登录MariaDB后执行以下SQL语句,查看root用户的认证插件:
SELECT user, host, plugin FROM mysql.user WHERE user='root';
- 若
plugin为unix_socket:说明是默认认证方式,需用sudo登录 - 若
plugin为mysql_native_password:说明已设置密码认证,登录时需输入密码
内容的提问来源于stack exchange,提问作者동미선
相关产品推荐
相关产品推荐

