2017-08-26 132 views
0

我已将MariaDB 5.5升级到10.1,并且它说mysql使用secure-auth并将旧密码更改为新密码。我在my.cnf中禁用了secure-auth并能够登录。MariaDB 10.1将旧密码更改为centos 7上的新密码并启用安全身份验证

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

建议我该怎么做。

+0

这对于超级用户或Unix和Linux SE来说就像是一个问题。更不用说我敢打赌,如果你做了网络搜索,这个问题已经得到了回答。你有什么尝试? – jdv

+0

我已经在my.cnf中禁用了secure-auth,并且能够登录到mysql,成功更改了root用户的密码。现在我想启用secure-auth,所以我只是从my.cnf中删除它,并再次出现同样的问题。这里开始我的困惑如何启用并使新密码适用。 – Tara

回答

0

我打算假设您的MariaDB服务器没有其他用户不知道密码,并且您有必要修改用户并设置系统级别的变量。 Super_Priv可能已经足够了:)

注意:您冒险锁定自己,但只要您已经登录,更改这些将不会将您从当前会话中注销,因此如果事情进展顺利错误的方式,而不必重新启动。我总是使用第二个连接进行测试,因为将自己锁定在数据库之外是一种嗡嗡声。我并不知道这件事。

注2:我想强烈建议备份用户表,安全与SQL与此类似:

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

可以修改“secure_auth”实时设置(所以你不”吨有通过改变系统变量“secure_auth”(如果您的用户帐户具有所需的权限)用下面的SQL(即运行在一个MySQL客户端)重新启动MariaDB的服务器)。

SET GLOBAL secure_auth="ON"; 

或 SET格洛巴L secure_auth =“OFF”;

要查看当前值:

SHOW GLOBAL VARIABLES LIKE '%auth%'; 

要使其永久通过重新启动,改变你的价值: /etc/my.cnf.d/server.cnf(也可能是您的/etc/my.cnf中 - 但愿它不是在这两个设置,但它是值得检查)

[mysqld] 
secure-auth=on 

(注:如你发现,在.CNF变化将不会被加载到你的MariaDB的服务器重新启动)

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

您可以查看当前账户和(加密)密码,用下面的SQL:

SELECT user, host, password FROM mysql.user; 

更新之前,你可以验证你的密码是什么,你认为它是这个SQL比较密码字段在mysql中。用户表:

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 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"; 

一(可怕的)这个做法好处是,如果你正在为多个用户设置一个密码,你可以做一个命令 - 例如,使用户密码对于通过本地主机连接在同一台计算机上的人员,“易”:

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

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

FLUSH privileges; 

,我会在登录到MariaDB的客户端的整个时间 - 进行更改,刷新,从另一个帐户进行测试,重新登录任何服务(即使出现错误但它们仍会继续工作,但会在下次登录尝试时失败),并且一旦安全,就退出登录。

提示:如果你是在UNIX和登录到客户端,需要的不是注销您的客户端的运行shell命令,你可以打按Ctrl-Z得到一个shell提示符(已暂停你的客户端)程序,然后可以运行shell命令(即运行第二个客户端!或重新启动连接到数据库的服务),并准备好后输入%1以返回客户端(您可能必须按回车重新加载提示)。这适用于unix中的大多数控制台程序,而不仅仅是MariaDB客户端。如果您重复执行初始,则返回命令将为%2和%3等,具体取决于您下降的级别。但时间不会变慢。

相关问题