我是新手Ubuntu Server
,我做了命令:
sudo apt-get install mysql-server mysql-common mysql-client
一切顺利,我被带回命令行。当我输入:
mysql -u root
我有一个错误说Access denied for user 'root'@'localhost' (using password: NO)
。任何想法我做错了什么?我尝试删除所有 3 个软件包并重新安装它们无济于事。谷歌证明没有帮助:(
打开终端并运行sudo dpkg-reconfigure mysql-server
给mysql的新密码
mysql -uroot -p
, 给出新创建的密码
注意:您可能必须在第一个命令中添加 mysql 版本 例如:dpkg-reconfigure mysqlserver-4.3
对于较新版本的 MySQL(对于 MariaDB < 10.2,请使用底部的查询,因为它不支持更改用户但仍使用 auth_socket)
如果您安装 5.7 并且不向
root
用户提供密码,它将使用该auth_socket
插件。该插件不在乎,也不需要密码。它只是检查用户是否使用 UNIX 套接字进行连接,然后比较用户名。
取自使用“插件:auth_socket”和https://askubuntu.com/a/801950/395418在 MySQL 5.7 中更改用户密码
所以为了把plugin
后面改成mysql_native_password
:
使用 sudo 登录:
sudo mysql -u root
plugin
使用单个命令更改和设置密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
当然你也可以使用上面的命令设置一个空密码。
只是为了记录,还有另一种方法可以只更改plugin
而不提供密码(将其留空):
update mysql.user set plugin = 'mysql_native_password' where User='root';
FLUSH PRIVILEGES;
一种方法是
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql
然后你将登录到mysql,输入以下内容:
use mysql;
update user set password='*6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4' where User='root';
flush privileges;
之后,停止mysql,启动正常
/etc/init.d/mysql stop
/etc/init.d/mysql start
mysql -u root -p
您的密码应该是:mypass
在重置密码之前,请尝试以下操作:
mysql -u root -p
在此之后,您必须输入您的密码(如果您没有看到任何 *,请不要担心,这是正常的),然后按返回按钮。
你需要设置 MySQL
$ mysqladmin -u root password NEWPASSWORD
在mysql 5.7.12上测试
/etc/init.d/mysql stop
/usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
/usr/local/mysql/bin/mysql
然后从打开的 sql 控制台键入以下命令:
UPDATE mysql.user
SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
exit;
停止当前进程并重新启动它。然后测试新密码(应该是MyNewPass)。
/etc/init.d/mysql stop
/etc/init.d/mysql start
/usr/local/mysql/bin/mysql -u root -p
要设置忘记的密码,您需要停止 mysql 守护程序,使用该--skip-grant-tables
选项启动它,然后使用 更改当前密码mysqladmin -u root password NEWPASSWORD
。
您可以在此处找到完整的密码重置程序。