MariaDB 10.1将旧密码更改为centos 7上的新密码并启用secure-auth

问题描述 投票:1回答:1

我现在已经将MariaDB 5.5升级到10.1,它说mysql使用secure-auth并将旧密码更改为新密码。我在my.cnf中禁用了secure-auth并且能够登录。

现在我的问题是如何将旧密码更改为新密码并在数据库上启用secure-auth。

建议我该怎么做。

mysql database mariadb centos7 database-administration
1个回答
1
投票

我将假设你的MariaDB服务器没有其他你不知道密码的用户,并且你有必要的PRIVILEGES来修改用户和设置系统级变量。 Super_Priv可能就够了:)

注意:您冒着锁定自己的风险,但只要您已登录,更改这些就不会让您退出当前会话,这样您就可以在事情出错的情况下恢复,而无需重新启动。我总是使用第二个连接进行测试,因为将自己锁定在数据库之外是一种嗡嗡声。不是我会对此有所了解。

注意2:我强烈建议使用类似于此的SQL备份用户表以确保安全:

CREATE TABLE mysql.user_backup_YYYYMMDD LIKE mysql.user;
INSERT INTO mysql.user_backup_YYYYMMDD SELECT * FROM mysql.user;

您可以通过使用以下sql更改系统变量“secure_auth”(如果您的用户帐户具有所需权限)来实时修改“secure_auth”设置(因此您不必重新启动mariadb服务器)(即。在mysql客户端中运行):

SET GLOBAL secure_auth="ON";

或SET GLOBAL secure_auth =“OFF”;

要查看当前值是什么:

SHOW GLOBAL VARIABLES LIKE '%auth%';

要通过重新启动使其永久化,请更改以下内容中的值:/etc/my.cnf.d/server.cnf(或者可能是您的/etc/my.cnf - 希望它不会同时设置,但值得检查)

[mysqld]
secure-auth=on

(注意:正如您所发现的那样,在重新启动mariadb服务器之前,不会加载.cnf中的更改)

启用auth_secure后,具有“旧密码”的用户将无法按原样登录。如果可能,最简单的方法是升级所有帐户的密码类型,以避免尝试同时支持这两种帐户的任何问题。

您可以使用以下SQL查看当前帐户和(加密)密码:

SELECT user, host, password FROM mysql.user;

在更新之前,您可以通过将此sql与mysql.user表中的PASSWORD字段进行比较来验证您的密码是否是您认为的密码:

SELECT OLD_PASSWORD('What You Think Your Password Is');

同样的事情,但对于新的密码:

SELECT PASSWORD('newpass');

从那里,你有选择,但通常的方法是设置密码:

SET PASSWORD FOR 'foo'@'%' = PASSWORD('newpass');

其中foo和%是mysql.user表中的字段HOST和USER。

另一个(时髦)选项是使用ALTER USER命令清除密码,而不是如下所述的INDENTIFIED BY子句:

https://mariadb.com/kb/en/library/alter-user/

显然,这可能导致安全反高兴。

您还可以通过update语句设置密码字段,例如,如果要将其设置回保存的值:

UPDATE mysql.user SET PASSWORD="SOME SAVED VALUE" where USER = "sqllove" and host = "localhost";

或者,如果您知道密码,则可以将其设置为“旧密码”格式:

UPDATE mysql.user SET PASSWORD=OLD_PASSWORD("Old Password") where USER = "sqllove" and host = "localhost";

这种方法的一个(可怕)好处是,如果您为多个用户设置密码,您可以在一个命令中执行此操作 - 例如,为通过localhost在同一台计算机上连接的人员设置密码“简单”:

UPDATE mysql.user set PASSWORD=PASSWORD("easy") where host="localhost";

并确保您的最新用户更改立即可见,完成后,最终SQL:

FLUSH privileges;

我会一直保持登录MariaDB客户端 - 进行更改,刷新,从另一个帐户进行测试,重新启动任何服务(即使出现错误但下次登录尝试失败,它们仍会继续工作)一旦安全就会登录出。

提示:如果您使用的是unix并登录到客户端并需要运行shell命令,而不是退出客户端,则可以按Ctrl-Z获取shell提示(暂停客户端)程序,然后您可以运行shell命令(即运行第二个客户端!或重新启动连接到数据库的服务),准备好后,输入%1返回客户端(可能必须按Enter键重新加载提示)。这适用于unix中的大多数控制台程序,而不仅仅是MariaDB客户端。如果像Inception一样重复执行,返回命令将是%2和%3,依此类推,具体取决于您关闭的级别数。但时间不会变慢。

© www.soinside.com 2019 - 2024. All rights reserved.