【问题标题】:Ubuntu Server MySQL - Can't access with root userUbuntu Server MySQL - 无法使用 root 用户访问
【发布时间】:2013-02-01 21:05:07
【问题描述】:

我是 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 个软件包并重新安装它们无济于事。谷歌证明没有帮助:(

【问题讨论】:

  • 肯定是密码错误,ubuntu在安装包的时候一般会问你admin密码,是不是在你安装mysql的时候问你密码?我猜你需要重置mysql root的密码

标签: mysql linux ubuntu


【解决方案1】:

打开终端运行sudo dpkg-reconfigure mysql-server给mysql新密码

mysql -uroot -p,给新创建的密码

注意:您可能需要在第一个命令中添加 mysql 版本 例如:dpkg-reconfigure mysqlserver-4.3

【讨论】:

    【解决方案2】:

    对于较新版本的 MySQL(对于 MariaDB

    如果您安装 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';
      

    当然你也可以使用上面的命令设置空密码。

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

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

    【讨论】:

    • 我花了 4 个小时来解决这个问题,而这个解决方案只适用于我全新安装的 ubuntu 16.04
    【解决方案3】:

    一种方法是

    /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

    【讨论】:

      【解决方案4】:

      你需要设置 MySQL

      $ mysqladmin -u root password NEWPASSWORD
      

      【讨论】:

      【解决方案5】:

      在您重置密码之前,请尝试以下操作:

      mysql -u root -p
      

      在此之后你必须写下你的密码(如果你没有看到任何*请不要担心这是正常的)并按下返回按钮。

      【讨论】:

      • 我试过了。当我这样做时,它会要求输入密码,如果我在其中输入某些内容,则表示相同的访问被拒绝错误,除非(使用密码:是)
      • 您完全确定您的密码正确吗?密码区分大小写...
      • 在我运行 linux 服务器的整个过程中(大约一周),我只输入了一个密码。安装mysql时不需要设置密码?我应该这样做吗?
      • 再次尝试我发布的命令,但这次只需在输入密码后按回车即可。
      • 尝试后我得到“无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器”
      【解决方案6】:

      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
      

      【讨论】:

        【解决方案7】:

        要设置忘记密码,您需要停止 mysql 守护程序,使用 --skip-grant-tables 选项启动它,然后使用 mysqladmin -u root password NEWPASSWORD 更改当前密码。

        您可以找到完整的密码重置程序here

        【讨论】:

          猜你喜欢
          • 2010-10-13
          • 1970-01-01
          • 2016-06-12
          • 2020-05-21
          • 1970-01-01
          • 2015-10-26
          • 2021-08-03
          • 2022-01-03
          • 2014-11-04
          相关资源
          最近更新 更多