【问题标题】:How to set root password in MariaDB 10.4 on macOS?如何在 macOS 上的 MariaDB 10.4 中设置 root 密码?
【发布时间】:2020-01-28 03:46:39
【问题描述】:

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

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

但这会引发错误

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

如果我尝试

UPDATE mysql.user SET Password=PASSWORD('mypassword') WHERE User='root';

引发错误

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...

我该如何解决这个问题?

【问题讨论】:

  • 为什么我们会导致这个问题?

标签: mysql mariadb


【解决方案1】:

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

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

SET PASSWORD=PASSWORD('mypassword')

由于用户不能再通过socket进行认证,认证方式会自动设置为mysql_native_password。

【讨论】:

  • ERROR 1290 (HY000):MariaDB 服务器使用 --skip-grant-tables 选项运行,因此无法执行此语句
【解决方案2】:

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

FLUSH PRIVILEGES;
ALTER USER root@localhost IDENTIFIED VIA mysql_native_password 
USING PASSWORD('my secret password');
FLUSH PRIVILEGES;

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

【讨论】:

    【解决方案3】:

    只是在这里添加一些东西-有时您必须在尝试设置密码之前运行flush privileges;。 所以命令将是:

    flush privileges;
    SET PASSWORD FOR root@localhost = PASSWORD("some_password");
    flush privileges;
    

    【讨论】:

      【解决方案4】:

      对于mysql用户:

      SET password for 'mysql'@'localhost' = password('mypassword');
      

      【讨论】:

        【解决方案5】:

        如果更新命令给出像column 'password' is not updatable这样的错误 然后改用alter命令。

        ALTER USER 'root'@'localhost' IDENTIFIED BY '1234';
        

        然后

        flush privileges;
        

        然后在 config.inc.php 文件中更新此密码,以便您可以访问 http://localhost/phpmyadmin

        【讨论】:

          猜你喜欢
          • 2020-12-31
          • 2018-06-18
          • 1970-01-01
          • 2016-10-10
          • 2021-12-20
          • 2015-11-01
          • 2021-10-19
          • 1970-01-01
          • 2015-07-10
          相关资源
          最近更新 更多