所以我为Ubuntu上的所有应用程序/设置编写了这个安装程序脚本,我最近在升级到16.04后使用了它。其中一件事就是安装mysql。我以一种特殊的方式来杀死那些用户提示,因为我不希望我的脚本停止用户输入。以下是代码:
sudo DEBIAN_FRONTEND=noninteractive apt-get install -qq -y mysql-server
现在,我尝试从终端登录mysql,但我不能。它已安装并正在运行,但我一直拒绝root用户访问。
mysqladmin -u root -p password
Enter password:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost''
我没有输入任何密码,因为我没有在任何时间设置密码。
任何人都有任何想法如何解决这个问题?感谢。
答案 0 :(得分:3)
如果要为root设置密码:
对于较新版本的MySQL(对于MariaDB< 10.2使用底部的查询,因为它不支持更改用户但仍使用auth_socket)
如果您安装了5.7并且没有为
root
用户提供密码,那么 将使用auth_socket
插件。该插件并不关心 不需要密码。它只是检查用户是否正在连接 使用UNIX套接字,然后比较用户名。
取自Change User Password in MySQL 5.7 With "plugin: auth_socket"和https://askubuntu.com/a/801950/395418
因此,为了将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;
答案 1 :(得分:1)
感谢您的帮助。