自动生成临时密码后无法访问MySQL
我已经删除并安装了OSX 10.11 El 并且我一直在通过本教程学习如何在新的OS X上运行MySQL 。第一步是下载MySQL For Mac OS X 10.9(x86,64位),DMG归档 (10.11版本,他们在教程中推荐)。 当我完成MySQL的安装时,我收到了这样的消息:
2015-10-25T02:10:54.549219Z 1 [Note] A temporary password is generated for root@localhost: R>gFySuiu23U If you lose this password, please consult the section How to Reset the Root Password in the MySQL reference manual.
这很奇怪,我从来没有见过这样的信息。 之后,我通过 Pane启动MySQL,然后在上使用/usr/local/mysql/bin/mysql -v命令进行另一步。 我收到一条错误消息,说:
ERROR 1045 (28000): Access denied for user 'cheetah'@'localhost' (using password: NO)
我也尝试通过 Pro使用root作为用户名和空密码访问数据库,我得到了访问被拒绝的消息,说:
Unable to connect to host 127.0.0.1 because access was denied. Double-check your username and password and ensure that access from your current location is permitted. MySQL said: Access denied for user 'root'@'localhost' (using password: NO)
好的,我也使用root作为用户名,但是使用了'R> '作为密码(它是从MySQL生成的)。 我有连接失败的消息说:
Unable to connect to host 127.0.0.1, or the request timed out. Be sure that the address is correct and that you have the necessary privileges, or try increasing the connection timeout (currently 10 seconds). MySQL said: Your password has expired. To log in you must change it using a client that supports expired passwords.
我怎么能解决这个问题? 我记得MySQL从来没有自动生成这样的临时密码,不是吗?
尝试这个:
mysql -u root -h 127.0.0.1 -p Enter password: (enter the random password here)
参考:
在此之后,您可以使用ALTER USER 'root'@'' BY 'new-';重置您的密码ALTER USER 'root'@'' BY 'new-';
现在MySQL已经生成的密码已经过期,问题是减less到获得这个密码再次工作(1)或生成一个新的(2)。 这可以通过使用skip-grant-选项来运行MySQL来完成,这会使其忽略访问权限:
停止你的MySQL服务器。
在f文件的[]部分末尾添加skip-grant-并保存。
启动MySQL服务器。
在中,input
mysql -u root -p
进入MySQL命令提示符。
在命令提示符下键入
USE mysql;
进入数据库用户的mysql数据库。
types
user SET = 'N' WHERE User = 'root';
让MySQL知道密码没有过期(1)或
user SET g = (''), = 'N' WHERE User = 'root';
将新密码分配给根(2)。
这是在OS X 上运行MySql v5.7(从.dmg安装)的工作原理。
cd /usr/local/mysql/bin mysql -u root -p ----
(input安装程序生成的临时密码。)
这使你进入沙盒模式和mysql>提示符。 然后用SET 设置所需的root密码:
SET FOR 'root'@'' = ('d');
在OSX 10.11 El 和MySQL 5.7.X下执行这些步骤,应该可以做到。
考虑到你已经安装MySQL然后..
打开窗口并键入:
sudo /usr/local/mysql/-files/mysql. stop
sudo –skip-grant-
由于在步骤2中触发的命令将处于持续状态,因此需要打开另一个窗口,然后键入:
mysql -u root -p
mysql.user SET ='N',g = ('')WHERE User ='root';
放弃;
sudo /usr/local/mysql/-files/mysql.重新启动
重要提示 :在步骤2中,您必须更换密码。
希望它会为你起作用。
我正在运行macOS (10.12.3),我安装了mysql-5.7.17-.12-.dmg。
@的答案对我来说是个例外,我需要添加./以确保我在当前工作目录中调用了mysql二进制文件。 这是上述软件包的安装位置。
如果您cd到/usr/local/mysql/bin并运行mysql -u root -p ---- ,则可能会收到以下错误消息。
mysql: '----'
我做了。 因为只需运行mysql而不提供path,就称之为以前安装的客户端版本。
所以要确保你正在执行正确的二进制文件,你也可以
提供绝对path
/usr/local/mysql/bin/mysql -u root -p ----
或改变目录后的相对path
cd /usr/local/mysql/bin ./mysql -u root -p ----
这两种方式应该工作。 一旦连接到客户端,指令与@中的相同。
input安装程序生成的临时密码并设置新密码。
SET FOR 'root'@'' = ('');
MySQL密码已过期
重置密码将暂时解决问题,但是,从MySQL 5.7.4到5.7.10(我认为为了提高安全性), 的默认值是360(一年)。 对于这些版本,如果您不对此(或个人用户帐户)进行更改,则所有用户密码将在360天后过期。
通常情况下,您可能会从脚本中收到以下消息:“您的密码已过期。要login,您必须使用支持过期密码的客户端进行更改。
因此,要防止自动密码过期,请以root身份( mysql -u root -p )login,然后为自动连接到服务器的客户端 (例如脚本)更改这些客户端的密码到期设置:
ALTER USER ''@'' NEVER;
或者您可以禁用所有用户的自动密码过期:
SET etime = 0;
(云端网 )
原文链接:
www.ydw.org