安装时mysql不要求root密码
我使用apt install mysql-server
在Ubuntu 16.04上安装MySQL,但在安装过程中,它没有要求root密码。
安装完成后,当我尝试以root
身份登录时,我得到了ERROR 1045
,并且mysql_secure_installation
引发了同样的错误。 我purge
d和autoremove
d然后重新安装但它不起作用。
我怎么能解决这个问题? 如果我在安装期间未设置root密码,是否可以设置root密码?
这是我的安装日志:
将安装以下附加软件包: libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server-5.7 MySQL的服务器核心 - 5.7 推荐套餐: mailx tinyca 将安装以下新软件包: libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server mysql-server-5.7 MySQL的服务器核心 - 5.7 0升级,6新安装,0删除,0未升级。 需要获得0 B / 17,9 MB的档案。 执行此操作后,将使用160 MB的额外磁盘空间。 你想继续吗? [是/否] 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)......
您可以通过启动mysql而不加载grant-tables来恢复或设置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
在Ubuntu 16.04中安装mysql
时不会要求输入密码,但是在成功安装后可以通过以下方式设置密码:
完成mysql安装后,运行命令:
sudo mysql_secure_installation
它将显示:
注意:建议在生产中使用所有MariaDB服务器运行本脚本的所有部分! 请仔细阅读每一步!
为了登录MariaDB以保护它,我们需要root用户的当前密码。 如果您刚刚安装了MariaDB,但尚未设置root密码,则密码将为空,因此您只需按Enter键即可。
Enter current password for root (enter for none):
此处按Enter键)
好的,成功使用密码,继续……
设置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-server
version 5.7.22,这种方法不起作用
请按照以下步骤在18.04中设置root密码:
由于没有为root用户设置密码,只需使用空密码登录即可
sudo mysql -u root -p Enter password: (press enter as no password is set)
之后可以轻松运行查询
ALTER USER 'root'@'locahost' IDENTIFIED BY '';
显然16.04(或任何5.7安装?)上的mysql-server安装允许root访问不是通过密码,而是通过auth_socket插件。 运行sudo mysql -u root
(nb w / oa password)将为您提供mysql控制台,而以非root身份运行该命令会提示您输入密码。
似乎更改密码并没有太大的区别,因为auth后端甚至没有检查密码。 有一篇非常全面的文章介绍了如何更改插件并切换到密码validation 。
添加到主要答案,如果你被困在
“ mysqld_safe使用/ var / lib / mysql中的数据库启动mysqld守护程序 ”
要记住的一件事是你必须使用另一个终端窗口输入以下命令。
$ sudo mysql --user=root mysql
如果您尝试在同一窗口中执行此操作,它将关闭mysqld安全模式进程。