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

时间:2017-02-23 16:44:43

标签: mysql ubuntu passwords ubuntu-16.04 ubuntu-server

我已经安装了ubuntu 16.04服务器。默认安装Mysql服务器。当我尝试使用mysql -u root -p访问mysql时,我无法登录到mysql,因为我没有密码。有没有默认密码?

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

16 个答案:

答案 0 :(得分:54)

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

答案 1 :(得分:28)

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

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

如果主机上没有root,我猜你不应该以root身份登录mysql?

答案 2 :(得分:12)

我在Ubuntu 18.10上全新安装了mysql-server,但是无法使用默认密码登录。然后只有我知道默认情况下,root用户使用auth_socket进行身份验证。因此,就像在答案更改为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';

答案 3 :(得分:11)

您可以通过使用--skip-grant-tables运行服务器并通过以root身份或使用sudo运行以下命令而无需密码来重置root密码:

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

答案 4 :(得分:9)

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

希望这会有所帮助

答案 5 :(得分:7)

在最新版本中,mySQL使用auth_socket,因此要登录,您必须了解自动生成的用户凭据。或者,如果您下载二进制版本,则在安装过程中,可以选择lagacy password

要在linux debian版本中安装SQL

sudo apt install mysql-server

了解密码

sudo cat /etc/mysql/debian.cnf

现在登录

mysql -u debian-sys-maint -p

使用来自debian.cnf的密码

如何查看可用的用户记录:

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

现在您可以创建一个新用户。使用以下命令:

use mysql;
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO 'username'@'localhost';
flush privileges;

列出特定mysql用户的授予权限

SHOW GRANTS FOR 'username'@'localhost';

如何撤销特定mysql用户的所有授予

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'username'@'localhost';

要从用户帐户列表中删除/删除特定用户

DROP USER 'username'@'localhost';

更多命令:

$ man 1 mysql

请不要重设root用户的密码,而是创建一个新用户并授予权限。这是最佳做法。

答案 6 :(得分:6)

从Ubuntu 20.04起,使用默认的MariaDB 10.3软件包,这些是必需的步骤(混合了该线程先前的回答):

  1. 以root用户身份登录到mysql:sudo mysql -u root
  2. 更新密码:
USE mysql;
UPDATE user set authentication_string=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
UPDATE user set plugin="mysql_native_password" where User='root';
FLUSH privileges;
QUIT
  1. sudo service mysql restart

此后,您可以使用新密码mysql -u root -p

连接到本地mysql。

答案 7 :(得分:5)

Ubuntu 20.04和MySql 8.0起:函数PASSWORD不再存在,因此正确的方法是:

  1. 使用sudo mysql -u root

    登录mysql
  2. 更改密码:

USE mysql;
UPDATE user set authentication_string=NULL where User='root';
FLUSH privileges;
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'My-N7w_And.5ecure-P@s5w0rd';
FLUSH privileges;
QUIT

现在您应该可以使用mysql -u root -p(或使用用户名root的phpMyAdmin)和您选择的密码登录。

P,S:

您还可以使用用户debian-sys-maint登录,密码在文件/etc/mysql/debian.cnf

答案 8 :(得分:4)

  

请注意,在运行MySQL 5.7(及更高版本)的Ubuntu系统中,默认情况下,MySQL根用户设置为使用auth_socket插件而不是使用密码进行身份验证。您需要将其身份验证方法从auth_socket切换到mysql_native_password

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

sudo apt install mysql-server

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

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

sudo mysql_secure_installation

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

  

如果您使用弱密码,这将导致问题

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

sudo mysql

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

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

  

错误1819(HY000):您的密码不符合当前的政策要求

mysql> FLUSH PRIVILEGES;

mysql> exit

  

注意:将root的MySQL用户配置为使用密码进行身份验证后,您将无法再使用以前使用的sudo mysql命令访问MySQL。相反,您必须运行以下命令:   mysql -u root -p

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

答案 9 :(得分:4)

唯一适用于我的选项是this link中描述的选项。

总而言之(以防网站崩溃),它说:

要安装MySQL:

sudo apt update
sudo apt install mysql-server

在下一个提示符下,将要求您为MySQL根用户设置密码。完成该操作后,脚本还将要求您删除匿名用户,限制root用户对本地计算机的访问并删除测试数据库。您应该对所有问题回答“是”。

sudo mysql_secure_installation

然后

sudo mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'very_strong_password';
FLUSH PRIVILEGES;

之后,您可以退出:

exit

现在,您可以轻松登录(记住输入 very_strong_password ):

mysql -u root -p
# type the password now.

这是经过数小时尝试上述选择后对我来说唯一的选择。

答案 10 :(得分:3)

我认为另一个值得关注的地方是from collections import OrderedDict dictionary = {'blue': OrderedDict.fromkeys([(0, 1), (0, 2)]), 'red': OrderedDict.fromkeys([(0, 3), (0, 4)])} 。 如果你去那里你可以看到三个有趣的'权限:

for pair in dictionary['blue']:
    print(pair)

以下是我使用root密码解决问题的方法:

运行后

/var/lib

我还运行了以下内容(而不是my_username放置你的):

user   group 
mysql  mysql

然后:

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

这促使我选择了一个新的root密码。 我希望它有所帮助

答案 11 :(得分:1)

只需运行sudo dpkg-reconfigure mysql-server-5.7

您可以通过运行dpkg --get-selections | grep mysql-server

找到已安装的版本

答案 12 :(得分:1)

这在带有 mysql 8 的 Ubuntu 20.04 上对我有用,奇怪的散列是因为本机 PASSWORD() 函数在 mysql 8(或更早版本?)中被删除了

UPDATE mysql.user SET 
 plugin = 'mysql_native_password',
 Host = '%',
 authentication_string = CONCAT('*', UPPER(SHA1(UNHEX(SHA1('insert password here'))))) 
WHERE User = 'root';
FLUSH PRIVILEGES;

答案 13 :(得分:1)

以下给了我新安装的 mysql 的信任

sudo cat /etc/mysql/debian.cnf

我尝试与工作台连接,它对我来说是安装工作台

sudo apt-get install mysql-workbench

答案 14 :(得分:0)

早期版本允许root密码为空,但在较新版本中,root密码是安装期间的admin(主)用户登录密码。

答案 15 :(得分:-1)

如果您使用.gitignore.安装mysql。
您只需使用apt install mysql登录到您的mysql。