我尝试了Resetting root password for mariadb does not work
中的建议ERROR 1698 (28000): Access denied for user 'root'@'localhost'仅谈论Ubuntu,而不是centos 8
可以使用mysql -u root
登录,但是root
表中没有用户mysql
!
因此,set password
语句使用0 affected rows.
即使在服务器重启后也无法正常工作。
答案 0 :(得分:0)
从ssh登录到centos服务器。然后停止mysqld服务,并使用—skip-grant-tables选项运行mysqld_safe使其处于不安全模式并重置密码。然后,在不安全模式下,使用不带任何-u或-p参数的mysql命令登录到mysql服务器。然后更新root密码flush特权,然后从msyql控制台退出。然后使用mysqladmin停止mysql服务器,它将要求输入密码并提供最近保存的新密码。然后最后启动mysqld服务。
$ systemctl stop mysqld
$ mysqld_safe --skip-grant-tables &
$ mysql
mysql> UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
$ mysqladmin -u root -p shutdown
$ systemctl start mysqld
编辑:---------------------------------------
$ sudo systemctl stop mariadb
$ sudo mysqld_safe --skip-grant-tables --skip-networking &
$ mysql -u root
MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit;
$ sudo kill `/var/run/mariadb/mariadb.pid`
$ sudo systemctl start mariadb