mysql在安装时不要求输入root密码


54

我曾经apt install mysql-server在Ubuntu 16.04上安装MySQL,但是在安装过程中,它没有询问root密码。

安装后,ERROR 1045当我尝试登录为rootmysql_secure_installation抛出相同的错误时,出现错误。我purged和autoremove天,然后重新安装,但它不工作。

我该如何解决?如果在安装过程中未设置root密码,可以设置root密码吗?

这是我的安装日志:

将安装以下附加软件包:
  libaio1 mysql客户端5.7 mysql客户端核心5.7 mysql服务器5.7
  mysql-server-core-5.7
建议包装:
  mailx tinyca
将安装以下新软件包:
  libaio1 mysql客户端5.7 mysql客户端核心5.7 mysql服务器mysql服务器5.7
  mysql-server-core-5.7
0个已升级,6个新安装,0个要删除和0个未升级。
需要获取0 B / 17,9 MB档案。
完成此操作后,将使用160 MB的额外磁盘空间。
你想继续吗?[Y / n] y
预先配置软件包...
选择以前未选择的软件包libaio1:amd64。
(正在读取数据库... 227144当前安装的文件和目录。)
正在准备解压... / libaio1_0.3.110-2_amd64.deb ...
解压libaio1:amd64(0.3.110-2)...
选择以前未选择的软件包mysql-client-core-5.7。
正在准备解压... / mysql-client-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
正在解包mysql-client-core-5.7(5.7.12-0ubuntu1)...
选择以前未选择的软件包mysql-client-5.7。
正在准备解压... / mysql-client-5.7_5.7.12-0ubuntu1_amd64.deb ...
正在解包mysql-client-5.7(5.7.12-0ubuntu1)...
选择以前未选择的软件包mysql-server-core-5.7。
正在准备解压... / mysql-server-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
正在解包mysql-server-core-5.7(5.7.12-0ubuntu1)...
选择以前未选择的软件包mysql-server-5.7。
正在准备解压... / mysql-server-5.7_5.7.12-0ubuntu1_amd64.deb ...
正在解包mysql-server-5.7(5.7.12-0ubuntu1)...
选择先前未选择的软件包mysql-server。
正在准备解压... / mysql-server_5.7.12-0ubuntu1_all.deb ...
正在解包mysql-server(5.7.12-0ubuntu1)...
正在处理libc-bin(2.23-0ubuntu3)的触发器...
处理man-db的触发器(2.7.5-1)...
正在处理systemd的触发器(229-4ubuntu4)...
正在处理尿素黑头(0.100.0-19)的触发器...
设置libaio1:amd64(0.3.110-2)...
设置mysql-client-core-5.7(5.7.12-0ubuntu1)...
设置mysql-client-5.7(5.7.12-0ubuntu1)...
设置mysql-server-core-5.7(5.7.12-0ubuntu1)...
设置mysql-server-5.7(5.7.12-0ubuntu1)...
更新替代品:使用/etc/mysql/mysql.cnf以自动模式提供/etc/mysql/my.cnf(my.cnf)
检查是否需要更新。
此安装的MySQL已经升级到5.7.12,如果仍然需要运行mysql_upgrade,请使用--force
设置mysql服务器(5.7.12-0ubuntu1)...
正在处理libc-bin(2.23-0ubuntu3)的触发器...

Answers:


60

您可以在不加载授权表的情况下通过启动mysql来恢复或设置root密码,而无需知道当前密码。

请注意$命令中的。这是指定键入命令时看到的终端提示。它显示的是一行文本,但实际上是键入的终端命令。“ mysql>”前缀也是一个提示。这是您在交互式运行mysql时收到的提示。

这是执行此操作的cli(命令行):(执行这些步骤之前,
请确保停止当前服务器。一次只能运行一台服务器。)

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld
$ sudo mysqld_safe --skip-grant-tables&

现在,您可以不使用密码以root用户身份登录并执行所有命令,在这种情况下,请将root用户密码设置为root。

$ sudo mysql --user=root mysql

如果您使用的是MySQL 5.6或更低版本,这是将在mysql内部执行的设置的root密码:

mysql> update user set Password=PASSWORD('new-password') where user='root';
flush privileges;

在MySQL 5.7或更高版本中

mysql> update user set authentication_string=PASSWORD('new-password') where user='root';
flush privileges;

从那里退出(杀死正在运行的msqld)mysql并正常启动它。

关于启动和停止mysql服务的注意事项:

停止mysql:

$ sudo service mysql stop

启动mysql(正常):

$ sudo service mysql start

终止临时mysql安全模式会话:

$ sudo mysqladmin shutdown

11
在mysql 5.7.12中,用户表中没有名为password的列。因此,以下命令对我有用。更新用户集authentication_string = PASSWORD('new-password'),其中user ='root';
代码

7
我仍然得到ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
llamerr '16

@ ErelSegal-Halevi您应该做两件事。运行$ mysql_upgrade -u root -p。还要尝试上面由RP Singh给出的命令。
LD詹姆斯

我也仍然收到此错误。
Jamie Hutber

SET PASSWORD FOR 'root' = PASSWORD('your-password')如果您使用的是mariadb
user1036719

37

mysql在Ubuntu 16.04中安装时,它不会询问密码,但是您可以在成功安装后按以下方式进行设置:

mysql安装完成后,运行命令:

sudo mysql_secure_installation

它会显示:

注意:建议在生产中使用所有MariaDB服务器运行此脚本的所有部分!请仔细阅读每个步骤!

为了登录MariaDB进行保护,我们需要root用户的当前密码。 如果您刚刚安装了MariaDB,但尚未设置root密码,那么该密码将为空,因此只需在此处按Enter。

Enter current password for root (enter for none): (在这里按Enter)

OK,成功使用密码,继续...

设置root密码可确保没有适当的授权,任何人都无法登录MariaDB root用户。

Set root password? [Y/n] y   (press 'y' to set new password)
New password: 
Re-enter new password:

密码更新成功!重新加载特权表.. ...成功!


对于Ubuntu 18.04或mysql-server5.7.22版,此方法将无效

要在Ubuntu 18.04中设置root密码,请首先执行LD James回答的前三个命令或前两个步骤,然后运行,

mysql> alter user 'root'@'localhost' identified by '<password>';

设置了root用户密码!

要么

请按照以下步骤在18.04中设置root密码:

由于没有为root用户设置密码,因此只需使用空白密码登录

sudo mysql -u root -p
Enter password: (press enter as no password is set)

之后可以轻松运行查询

ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';

2
此问题的问题在于,由于用户不知道,因此无法进入提到的提示current password for root
LD詹姆斯

@LDJames是的,你是对的。我不记得关于ERROR的信息:1405当我跑步mysql_secure_installationsudo mysql_secure_installation为我工作时。mysql安装不要求输入密码。我也是一样 并here press enter指按无密码进入。
雏菊

2
由于cons ubuntu 18.04或debian 9+,它不会使用空白密码连接,即使在重置root用户通行证之后,它仍然拒绝连接
Chefarov

@chefarov面对同样的问题,非常沮丧
RedactedProfile

确实,我仍然遇到相同的错误
Jamie Hutber

16

显然,在16.04上的mysql-server安装(或任何5.7安装?)允许root访问不是通过密码,而是通过auth_socket插件。运行sudo mysql -u root(nb w / oa password)将为您提供mysql控制台,而以非root用户身份运行该命令会提示您输入密码。

似乎更改密码并没有多大区别,因为auth后端甚至不检查密码。关于如何更改插件以及如何切换到密码身份验证,有非常全面的文章。


4
我能够通过全新安装进行确认,apt install mysql-server而无需在18.04上指定密码。症状和解决方案与所描述的完全相同。
EricC

那我该怎么连接?
Jamie Hutber

9

安装完成后:

1。

sudo mysql

(是的,没有用户没有通过)

2,您现在在mysql控制台中:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_new_pass';

3。

FLUSH PRIVILEGES;

  1. 而已。现在,您可以像往常一样下次进入控制台:

    mysql -u root -p my_new_pass


3
我尝试了许多其他答案,但该答案适用于Amazon EC2
Haris ur Rehman

2
对于WSL Ubuntu(Windows上的Linux),这是正确的答案。
加西亚

2
这是对我在Google Cloud上ubuntu 18.04新安装上工作的唯一答案。
Aakash

1
在Ubuntu 19.04上为我工作。我确实运行了mysql_secure_myinstallation,但似乎未设置root密码。
Jens Wagemaker

1
我尝试了许多解决方案。这是最简单也是唯一可行的方法。
mreff555

4
  1. 有一个默认的用户帐户。

    $ vim /etc/mysql/debian.cnf 
    

    您将像这样从该帐户获取该帐户:

    user     = debian-sys-maint
    password = nUZTARYslBsASzpw
    
  2. 您使用此帐户登录

    $ mysql -u debian-sys-maint -p
    
  3. 编辑您的root密码

    mysql> show databases;
    
    mysql> use mysql;
    
    mysql> update user set authentication_string=PASSWORD("new_password") where user='root';
    
    mysql> update user set plugin="mysql_native_password";
    
    mysql> flush privileges;
    
    mysql> quit;
    
  4. 重启mysql

    $ /etc/init.d/mysql restart;
    

那么您就可以mysql -u root -p使用之前的设置了。


我尝试了所有其他解决方案,这是唯一对我有用的解决方案。(Linux Mint 19.2)。
ElectroBuddha

0

添加到主要答案中,如果您被困在

mysqld_safe使用/ var / lib / mysql中的数据库启动mysqld守护进程

要记住的一件事是,您必须使用另一个终端窗口来输入以下命令。

$ sudo mysql --user=root mysql

如果尝试在同一窗口中执行此操作,它将关闭mysqld safemode进程。


-1

这是在Ubuntu 18.10中mysql-server使用终端密码提示进行设置的方法。

  1. 通过https://dev.mysql.com/downloads/repo/apt/下载MySQL APT存储库
  2. cd进入下载并运行的目录dpkg -i mysql-apt-config_0.8.13-1_all.deb(检查版本号)
  3. 从提示菜单中,选择最后一个选项“确定”,然后再次选择“确定”。

  4. 更新并安装mysql-server和mysql-client:

sudo apt更新
sudo apt安装mysql服务器mysql客户端
  1. 在promt中输入您的root密码。
  2. 选择"Use Legacy Authentication Method"您正在运行的框架/应用程序(例如laravel)是否还不支持新版本"Strong Password Encryption",否则,如果您的框架/应用程序支持,"Strong Password Encryption"则选择它。
  3. 以root用户身份登录并检查是否有效。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.