问题描述
我已经安装了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
输入刚刚设置的密码后,您将看到MySQL提示。
第七种方法
首先你应该停止mysql
使用此命令sudo mysqld_safe --skip-grant-tables --skip-networking &
然后输入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 mysql* -R
sudo rm -rf mysql*
接着:
sudo apt-get install mysql-server
这提示我选择一个新的root密码。希望对您有所帮助
参考资料