如何在 macOS 上的 MariaDB 10.4 中设置 root 密码?

Jav*_*ide 2 mysql mariadb

我刚刚在 macOS Mojave 上安装了 MariaDB 10.4,现在需要为root用户设置密码。我阅读了其他 SO 问题,我可以通过

sudo mysql -u root
MariaDB [mysql]> UPDATE mysql.user SET authentication_string = PASSOWRD('mypassword') WHERE user = 'root';
Run Code Online (Sandbox Code Playgroud)

但这会引发错误

ERROR 1348 (HY000): Column 'authentication_string' is not updatable

如果我尝试

UPDATE mysql.user SET Password=PASSWORD('mypassword') WHERE User='root';
Run Code Online (Sandbox Code Playgroud)

引发错误

ERROR 1348 (HY000): Column 'Password' is not updatable

这个

set password for 'root'@'localhost' = 'mypassword';

投掷

ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number

和这个

alter user 'root'@'localhost' identified with mysql_native_password by 'mypassword';

投掷

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version...

我该如何解决这个问题?

小智 8

对于 10.4,我必须运行以下命令来强制 root 用户输入密码:

FLUSH PRIVILEGES;
ALTER USER root@localhost IDENTIFIED VIA mysql_native_password 
USING PASSWORD('my secret password');
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

看起来安装过程已更改为默认使用 unix_socket 身份验证插件 https://mariadb.com/kb/en/authentication-from-mariadb-104/


Geo*_*ter 6

由于 MariaDB 10.4mysql.global_priv已取代mysql.user. 后一个现在是一个视图,不能再更新了。

由于您已经以 root 身份登录,请保持简单并使用以下命令更改密码:

SET PASSWORD=PASSWORD('mypassword')
Run Code Online (Sandbox Code Playgroud)

由于用户无法再通过套接字进行身份验证,因此身份验证方法将自动设置为 mysql_native_password。

  • 错误 1290 (HY000):MariaDB 服务器正在使用 --skip-grant-tables 选项运行,因此无法执行此语句 (9认同)