我刚刚在 RHEL 系统上安装了 MariaDB,这是我第一次使用 MariaDB。我只能使用以下命令启动/停止服务:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
sudo systemctl stop mariadb.service
现在,当我尝试使用以下内容时:
mysql --user=root
我收到以下错误:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
由于是全新安装,我希望密码为空,并且我已卸载并重新安装,希望这样可以解决问题,但显然没有。
我读过关于使用 --skip-grant-tables 重置 root 密码的信息,但由于必须使用 systemctl,我无法使用此选项启动服务。我不确定我是否将选项放在了命令中的错误位置,但我尝试了许多方法,但都无济于事。
没有其他命令(来自 /etc/init.d)可以运行该服务。
如果有人能帮助我让 --skip-grant-tables 正常工作,或者弄清楚如何以某种方式重置 mariadb 的 root 密码,或者以某种方式设置具有所有权限的另一个用户,我将不胜感激。谢谢。
答案1
尝试运行mysql_secure_installation - improve MySQL installation security
,正如迈克尔提到的,这听起来就像您已经拥有了mysql
除全新安装之外的其他数据库。
您也可以尝试停止mariadb.service
删除 mysql 数据库,然后尝试再试一次mysql_install_db - initialize MySQL data directory
。
答案2
尝试以 root 身份运行客户端。默认值可能是 root 的 unix socket auth,它会检查进程的 UID 是否是用户所需的 UID(在本例中为 0)并据此允许/拒绝。
答案3
您是否尝试过:
mysql --user=root -p
然后当要求输入密码时,只需按回车键?
抱歉,这很明显,而且您认为值得一提,以防万一。
答案4
如果您没有系统 root 访问权限或系统 root 被禁用,请确保以 sudo 身份运行 mysql_secure_installation。我之前遇到过同样的问题,我禁用了系统范围内的 root 登录,并尝试在不使用 sudo 的情况下运行 mysql_secure_installation。