Linux MySQL - 无法登录root

时间:2016-04-16 03:31:00

标签: mysql linux

所以我为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''

我没有输入任何密码,因为我没有在任何时间设置密码。

任何人都有任何想法如何解决这个问题?感谢。

2 个答案:

答案 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

  1. 使用sudo登录:

    sudo mysql -u root
    
  2. 更改plugin并使用单个命令设置密码:

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
    
  3. 当然您也可以使用上面的命令设置一个空密码。

    只是为了记录,还有另一种方法只更改plugin而不提供密码(将其留空):

        update mysql.user set plugin = 'mysql_native_password' where User='root';
        FLUSH PRIVILEGES;
    

答案 1 :(得分:1)

是的,我现在觉得很傻。问题实际上是Linux权限,而不是mysql。我使用sudo安装它,我需要使用sudo登录。无需密码,只需sudo mysql -u root -p -h本地主机。只需在密码提示和中提琴处输入,我就在。

感谢您的帮助。