当前位置: 首页>>技术教程>>正文


ubuntu服务器16.04中mysql的默认密码

, , , ,

问题描述

我已经安装了Ubuntu 16.04服务器。默认情况下,Mysql服务器已安装在其中。当我尝试使用mysql -u root -p访问mysql时,由于没有密码,无法登录mysql。有没有默认密码?

我也尝试过--skip-grant-tables,即使这样也不行。即使尝试仅使用mysql -u root登录也失败。

最佳方法

这就是您要寻找的:Debian-base Linux上的sudo mysql --defaults-file=/etc/mysql/debian.cnf MySql通常使用带有凭据的配置文件。

次佳方法

我在Ubuntu 18.10上全新安装了mysql-server,但无法使用默认密码登录。然后只有我知道默认情况下,使用auth_socket对root用户进行身份验证。因此,当答案更改为mysql_native_password时,我们可以使用mysql默认密码

$ sudo apt install mysql-server
$ sudo cat /etc/mysql/debian.cnf

您可以在其中找到以下几行

user     = debian-sys-maint
password = password_for_the_user

然后:

$ mysql -u debian-sys-maint -p
Enter password: 

输入来自debian.cnf的密码

mysql> USE mysql
mysql> SELECT User, Host, plugin FROM mysql.user;

+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| root             | localhost | auth_socket           |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)

mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> COMMIT; 

要么:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

要么:

//对于MySQL 5.7+

mysql>UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';

-更新-

有时您需要重新启动mysql服务器。

sudo service mysql restart

要么

sudo systemctl restart mysql

第三种方法

默认情况下,Mysql具有root用户的身份验证插件auth_socket,它要求系统用户名和db用户名相同。

具体来说,以root或sudo -i身份登录,只需键入mysql即可登录,您将以mysql root身份登录,然后可以创建其他运行用户。

如果主机上没有root用户,那么我想您不应该以root用户身份登录mysql吗?

第四种方法

您可以简单地通过使用–skip-grant-tables运行服务器来重置root密码,并通过以root用户或sudo身份运行以下命令来不使用密码登录:

service mysql stop
mysqld_safe --skip-grant-tables &
mysql -u root

mysql> use mysql;
mysql> update user set authentication_string=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit

# service mysql stop
# service mysql start
$ mysql -u root -p

第五种方法

尽管这是一个古老的问题,但我们中仍有几个人仍在努力寻找答案。至少我做到了。请不要遵循所有冗长的解决方案。通过在mysql命令前添加sudo,您可以简单地以root用户身份登录mysql而无需提供任何密码(前提是这是全新安装,或者自安装以来尚未更改密码)。 $sudo mysql -uroot -p
mysql>
这是因为mysql在最新版本之一中更改了安全模型。

希望这可以帮助

第六种方法

Note that in Ubuntu systems running MySQL 5.7 (and later versions), the root MySQL user is set to authenticate using the auth_socket plugin by default rather than with a password. you will need to switch its authentication method from auth_socket to mysql_native_password

正如@BeNiza所说,他们更改了安全模型。我做了以下步骤,它在ubuntu 18.04上适用于mysql 5.7.27

sudo apt install mysql-server

现在已安装MySQL数据库软件,但其配置尚未完成。

为了确保安装安全,MySQL附带了一个脚本,该脚本将询问我们是否要修改一些不安全的默认值。通过键入以下命令来启动脚本:

sudo mysql_secure_installation

您应该按Y并在每个提示下按ENTER键。

This will cause issues if you use a weak password

您可以简单地以root用户身份登录mysql,而无需在mysql命令前添加sudo来提供任何密码。

sudo mysql

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your-password';

如果您设置了弱密码,则会看到以下错误:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

mysql> FLUSH PRIVILEGES;

mysql> exit

Note: After configuring your root MySQL user to authenticate with a password, you’ll no longer be able to access MySQL with the sudo mysql command used previously. Instead, you must run the following: mysql -u root -p

输入刚刚设置的密码后,您将看到My​​SQL提示。

第七种方法

  1. 首先你应该停止mysql

  2. 使用此命令sudo mysqld_safe --skip-grant-tables --skip-networking &

  3. 然后输入mysql -u root尝试这种方式,我已经解决了这种方法的问题。

第八种方法

我认为另一个要看的地方是/var/lib。如果去那里,您会看到三个具有’interesting’权限的mysql文件夹:

user   group 
mysql  mysql

这是解决root密码问题的方法:

跑步后

sudo apt-get purge mysql*
sudo rm -rf /etc/mysql

我还运行了以下命令(而不是将my_username放在您的用户名中):

cd /var/lib
sudo chown --from=mysql <my_username> mysql* -R
sudo rm -rf mysql*

接着:

sudo apt-get install mysql-server

这提示我选择一个新的root密码。希望对您有所帮助

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9009.html,未经允许,请勿转载。