或者

或者

我曾经apt install mysql-server在 Ubuntu 16.04 上安装 MySQL,但在安装过程中它没有要求输入 root 密码。

安装后,ERROR 1045当我尝试以 身份登录时,root出现mysql_secure_installation了同样的错误。我purge反复尝试,autoremove然后重新安装,但不起作用。

我该如何解决这个问题?如果我在安装期间没有设置 root 密码,我可以设置吗?

这是我的安装日志:

将会安装以下附加软件包:
  libaio1 mysql-客户端-5.7 mysql-客户端核心-5.7 mysql-服务器-5.7
  mysql-服务器核心-5.7
建议的软件包:
  mailx tinyca
将会安装以下新软件包:
  libaio1 mysql-客户端-5.7 mysql-客户端核心-5.7 mysql-服务器 mysql-服务器-5.7
  mysql-服务器核心-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) 的触发器...
处理 ureadahead 的触发器(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) ...
update-alternatives:使用 /etc/mysql/mysql.cnf 在自动模式下提供 /etc/mysql/my.cnf (my.cnf)
检查是否需要更新。
此安装的 MySQL 已升级至 5.7.12,如果仍需要运行 mysql_upgrade,请使用 --force
设置 mysql-server(5.7.12-0ubuntu1)...
处理 libc-bin (2.23-0ubuntu3) 的触发器...

答案1

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

请注意$在命令中。这指定了您在输入命令时看到的终端提示符。它显示它是一行文本,但实际输入的是终端命令。“mysql>“前缀也是一个提示符。这是运行时获得的提示符mysql交互地。

这是客户端(命令行)来执行此操作:
(务必停止当前服务器执行这些步骤之前。一次只能运行一个服务器。

$ 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

答案2

在 Ubuntu 16.04 中安装时不会要求输入密码,mysql但您可以在安装成功后通过以下方式设置密码:

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

sudo mysql_secure_installation

它将显示:

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

为了登录 MariaDB 并保证其安全,我们需要 root 用户的当前密码。 如果您刚刚安装了 MariaDB,并且尚未设置 root 密码,则密码将为空,因此您只需在此处按 Enter 键即可。

Enter current password for root (enter for none): (此处按 Enter 键)

好的,成功使用密码,继续......

设置根密码可确保没有人可以在没有适当授权的情况下登录 MariaDB 根用户。

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

密码更新成功!正在加载权限表... 成功!


对于 Ubuntu 18.04 或mysql-server版本 5.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>';

答案3

安装后只需:

  1. sudo mysql (是的,没有用户就没有通行证)

  2. 您现在位于 mysql 控制台。执行:

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

  3. FLUSH PRIVILEGES;

就这样。你下次就可以像平常一样进入控制台了:

mysql -u root -pmy_new_pass

答案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使用之前的设置。

相关内容