![或者](https://linux22.com/image/929212/%E6%88%96%E8%80%85.png)
我曾经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
安装后只需:
sudo mysql
(是的,没有用户就没有通行证)您现在位于 mysql 控制台。执行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_new_pass';
FLUSH PRIVILEGES;
就这样。你下次就可以像平常一样进入控制台了:
mysql -u root -pmy_new_pass
答案4
有一个默认用户帐户。
$ vim /etc/mysql/debian.cnf
您将从中获取此帐户,如下所示:
user = debian-sys-maint password = nUZTARYslBsASzpw
您使用此账户登录
$ mysql -u debian-sys-maint -p
编辑你的 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;
重启 mysql
$ /etc/init.d/mysql restart;
然后您就可以mysql -u root -p
使用之前的设置。