我已经安装了ubuntu 16.04服务器。默认安装Mysql服务器。当我尝试使用mysql -u root -p
访问mysql时,我无法登录到mysql,因为我没有密码。有没有默认密码?
我也试过--skip-grant-tables
,即使这不起作用。即使尝试仅使用mysql -u root
登录也是失败的。
答案 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软件包,这些是必需的步骤(混合了该线程先前的回答):
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 -u root -p
答案 7 :(得分:5)
从 Ubuntu 20.04和MySql 8.0起:函数PASSWORD
不再存在,因此正确的方法是:
使用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:
您还可以使用用户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
输入刚刚设置的密码后,您将看到MySQL提示符。
答案 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。