我已经安装了Ubuntu 16.04服务器。默认情况下,Mysql服务器已安装在其中。当我尝试使用访问mysql时mysql -u root -p
,由于没有密码,我无法登录mysql。有没有默认密码?
我也尝试过用--skip-grant-tables
,即使这样也不行。即使仅尝试登录mysql -u root
也将失败。
我已经安装了Ubuntu 16.04服务器。默认情况下,Mysql服务器已安装在其中。当我尝试使用访问mysql时mysql -u root -p
,由于没有密码,我无法登录mysql。有没有默认密码?
我也尝试过用--skip-grant-tables
,即使这样也不行。即使仅尝试登录mysql -u root
也将失败。
Answers:
这就是您要寻找的:
sudo mysql --defaults-file=/etc/mysql/debian.cnf
基于Debian的Linux上的MySql通常使用带有凭据的配置文件。
我mysql-server
在Ubuntu 18.10上进行了全新安装,无法使用默认密码登录。然后只有我知道默认情况下,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';
-更新-
有时您将需要重新启动mysql服务器。
sudo service mysql restart
要么
sudo systemctl restart mysql
sudo service mysql restart
您可以简单地通过使用--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
update user set plugin="mysql_native_password";
后添加update user
)。
请注意,在运行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
输入刚刚设置的密码后,您将看到MySQL提示。
在最新版本中,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用户的密码,而要创建一个新用户并授予权限。这是最佳做法。
从Ubuntu 20.04开始,使用默认的MariaDB 10.3软件包,这些是必需的步骤(混合了该线程的先前答案):
sudo mysql -u root
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
sudo service mysql restart
之后,您可以使用新密码连接到本地mysql: mysql -u root -p
sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
尝试这种方式,我已经解决了我的问题,这种方法。从带有MySql 8.0的Ubuntu 20.04开始:该函数PASSWORD
不再存在,因此正确的方法是:
使用登录到mysql sudo mysql -u root
更改密码:
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:
您也可以使用user登录debian-sys-maint
,密码在文件中/etc/mysql/debian.cnf
对我有用的唯一选择是此链接中描述的选择。
总而言之(以防网站崩溃),它说:
安装MySQL:
sudo apt update
sudo apt install mysql-server
在下一个提示符下,将要求您设置MySQL root用户的密码。完成该操作后,脚本还将要求您删除匿名用户,限制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.
经过数小时的尝试,以上是我唯一的选择。
我认为另一个值得一看的地方是/var/lib
。如果去那里,您会看到三个具有“有趣”权限的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密码。希望对您有所帮助
只需运行 sudo dpkg-reconfigure mysql-server-5.7
您可以通过运行找到已安装的版本 dpkg --get-selections | grep mysql-server
早期版本允许root密码为空,但在较新版本中,设置的root密码是安装期间的admin(main)用户登录密码。