我正在安装一个新服务器,一直遇到这个问题。
当我尝试使用root用户登录mysql数据库时,出现了以下错误:
错误1698(28000):拒绝用户“root”@“localhost”的访问
不管我是通过终端(ssh)、phpmyadmin还是mysql客户端(例如navicat)进行连接。他们都失败了。
我查看了mysql.user表,得到以下结果:
+------------------+-------------------+
| user | host |
+------------------+-------------------+
| root | % |
| root | 127.0.0.1 |
| amavisd | localhost |
| debian-sys-maint | localhost |
| iredadmin | localhost |
| iredapd | localhost |
| mysql.sys | localhost |
| phpmyadmin | localhost |
| root | localhost |
| roundcube | localhost |
| vmail | localhost |
| vmailadmin | localhost |
| amavisd | test4.folkmann.it |
| iredadmin | test4.folkmann.it |
| iredapd | test4.folkmann.it |
| roundcube | test4.folkmann.it |
| vmail | test4.folkmann.it |
| vmailadmin | test4.folkmann.it |
+------------------+-------------------+
如您所见,root应该具有访问权限。
服务器非常简单,因为我已经尝试解决了一段时间了。。
它运行的是带有apache、mysql和php的ubuntu16.04.1lts,这样就可以托管网站,而iredmail0.9.5-1则可以托管邮件。
在安装iredmail之前,登录mysql数据库可以正常工作。我也试过了,只是安装了iredmail,但是root,也不起作用。。。
如果有人能告诉我如何修复我的mysql登录问题,或者如何在现有mysql安装的基础上安装iredmail。是的,我尝试了安装技巧,但在配置文件中找不到这些变量。
17条答案
按热度按时间vwkv1x7d1#
我在一个debian8vm上遇到了这个问题,我在windows10桌面上通过putty与之交互。
我在这里尝试了各种各样的建议,但是没有什么效果,我正在debian主机上运行mariadb。最后,我发现我无法在安全模式下启动db服务器,但我不需要这样做,以下命令实际上对我有效,即允许新创建的mysql用户登录mysql/mariadb服务器:
如果上面的方法对你不太管用,那么按照zetacu在上面的帖子(zetacu)中概述的步骤来做,然后按照我的步骤来做。
现在,您应该能够使用远程终端客户端并使用以下命令安全地登录到mysql:
093gszye2#
就我而言,
我确信我的密码是正确的,否则错误代码将是
ERROR 1045 (28000): Access denied for user
所以我用sudo重新登录,这一次我成功了。查看文档
然后更改根密码,
然后使用重新启动服务器
sudo /etc/init.d/mysql restart
yzuktlbb3#
操作系统:ubuntu18.04
mysql:5.7
添加
skip-grant-tables
到mysqld.cnf的文件结尾cp我的.cnf
重置密码
拆下
skip-grant-tables
从my.cnf打开mysql
检查密码策略
更改的配置
validate_password
```mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.05 sec)
mysql> set global validate_password_mixed_case_count=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_number_count=3;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_special_char_count=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_length=3;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_dictionary_file | |
| validate_password_length | 3 |
| validate_password_mixed_case_count | 0 |
| validate_password_number_count | 3 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 0 |
+--------------------------------------+-------+
6 rows in set (0.00 sec)
enyaitl34#
点击此处:
新版mysql就是这样做的。
在新的mysql中,如果安装时密码为空,则它基于
auth_socket
插件。正确的方法是使用
sudo
特权。然后使用以下方法更新密码:
一旦这样做了
stop and start
mysql服务器。有关完整的详细信息,请参阅此链接。
如有疑问,请发表评论。
icomxhvb5#
不需要sudo
数据库由两个全权限帐户初始化:第一个是“root”,不可访问,第二个是用户名(使用命令检查)
whoami
).要启用对根帐户的访问,您需要使用用户名登录
手动更改root用户的密码
以“root”身份登录
ergxz8rk6#
这也发生在我身上。问题在于linux发行版已经附带的mysql repo。所以当你这么做的时候:
$ sudo apt install mysql-server
它从默认的repo安装mysql,这就产生了这个问题。为了克服这个问题,您需要卸载安装的mysql$ sudo apt remove mysql* --purge --auto-remove
然后从mysql官方网站mysql apt repo下载mysql repo,并按照他们的文档说明如何添加repo和安装它。这没有问题。同样正如@zetacu所回答的,您可以验证mysql root现在确实使用mysql\u native\u密码插件vdzxcuhz7#
关于如何为最新的mysql设置新密码,有一个很好的、定期更新的指南。
https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04
最好从上面的链接中阅读整个主题,但简而言之,这可能会有所帮助,
运行安全脚本:
“mysql\u secure\u安装”的详细信息
之后,您可以按照下面的步骤更改密码
mysql>
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
长安根用户密码详细信息如果您有问题,可能需要重新安装mysql。
zzlelutf8#
经过几个小时的研究,我找到了解决办法。
停止mysql
创建mysql服务目录。
给mysql用户写服务目录的权限。
手动启动mysql,无需权限检查或联网。
不用密码登录。
更新密码
关闭mysql。
正常启动mysql服务。
u59ebvdq9#
我建议删除mysql连接-
这是为MySQL5.5版本更新的,如果您的版本不同,请相应更改第一行
再次安装,但这次自己设置根密码。这将节省很多精力。
xmakbtuz10#
经过几个小时的挣扎,这里没有解决方案,这对我来说很管用,然后我发现了一个youtube视频,上面说密码栏现在被称为authentication\u string。所以我可以修改我的密码如下:首先从终端进入mysql
然后在mysql内部键入mysql之后的内容>
在这一点上,你是走出mysql回到你的正常终端的地方。您需要重新启动mysql才能使其生效。对于该类型,请执行以下操作:
请参阅此视频链接以获得更好的理解
l5tcr1uw11#
第一步:转到/etc/phpmyadmin/config.inc.php,然后取消对allownopassword所在行的注解。第二步:登录mysql默认帐户
仅此而已!
aamkag6112#
我已经做了以下步骤来解决这个问题。使用(sudo mysql-p-u root)登录到您的机器中的mysql并点击以下查询。
如果仍然出现错误,请尝试一次。我希望这段代码能帮到你很多!!
e5nszbig13#
第一步。
sudo mysql -u root -p
第二步。USE mysql;
第三步。ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';
这里的'管理员'是你的新密码,你可以改变它。第四步。
exit
谢谢。你完了。mwngjboj14#
我第一次也面临同样的问题。
现在它是固定的:
首先,你复制
/etc/mysql/mysql.conf.d/mysqld.cnf
文件和过去/etc/mysql/my.cnf
.您可以通过命令执行:
现在让我们休息一下密码:
在终端中使用以下命令:
现在您进入了mysql控制台。
然后,让我们编写一些查询来重置根密码
现在我们可以打扫了
/etc/mysql/my.cng
在编辑器中打开上面的文件并删除文件中的整行。之后,让我们重新启动mysql:
现在让我们使用mysql和新创建的密码:
最后输入新创建的密码。
yyyllmsg15#
一些系统,如ubuntu、mysql,默认情况下使用unix auth\u socket插件。
基本上意味着:dbèu用户使用它时,将被系统用户认证为“auth”。你可以看看你的
root
用户设置如下:正如您在查询中看到的
root
用户正在使用auth_socket
插件有两种方法可以解决这个问题:
可以将根用户设置为使用
mysql_native_password
插件您可以创建一个新的
db_user
与你system_user
(推荐)方案1:
选项2:(用你的用户名替换你的系统用户)
请记住,如果使用选项2,则必须以系统用户名连接到mysql(
mysql -u YOUR_SYSTEM_USER
)注意:在某些系统(如debian stretch)上,“auth\u socket”插件称为“unix\u socket”,因此相应的sql命令应为:
UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
更新:从@andy的评论看来,mysql 8.x.x更新/替换了auth_socket
为了caching_sha2_password
我没有用mysql 8.x.x进行系统设置来测试这个问题,但是上面的步骤应该可以帮助您理解这个问题。答复如下:mysql 8.0.4的一个变化是新的默认身份验证插件是“caching\u sha2\u password”。新的'your\u system\u user'将拥有这个auth插件,您现在可以使用“mysql-u your\u system\u user-p”从bashshell登录,并在提示符处提供该用户的密码。不需要“更新用户设置插件”步骤。有关8.0.4默认身份验证插件更新,请参阅,https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/