为什么 mysql-server 安装不要求我输入 root 密码?

为什么 mysql-server 安装不要求我输入 root 密码?

我最近遇到了一个问题,我试图更改 root 密码,但我忘记了,但似乎我以某种方式设法完全破坏了 mysql 服务本身,并且由于我的许多其他服务连接到服务器时出现问题甚至在我的愚蠢行为发生之前,我就决定最好完全重新安装。要删除我使用的所有组件apt-get purge mysql*,但是当我执行命令时,命令 mysql 似乎不受影响。经过几次尝试和重新启动后,当我终于似乎已经清除了 mysql 时,当我尝试安装时,它安装了,但没有显示任何配置,当使用 mysql 命令时,当我尝试时,它甚至没有询问我用户要更改root密码,它说可以,但密码不起作用。我非常困惑和沮丧,这已经不是第一次发生了,重新安装 mysql 实际上是我的头号噩梦。请帮助我,我完全不知道我应该做什么。

编辑:我实际上必须设置密码,但是......它允许我使用任何密码登录,而且,即使在使用 mysql_secure_installation 之后,远程连接实际上也不起作用。我不知道实际的 f 发生了什么,但我的 mysql 安装完全损坏了

答案1

您可能在尝试设置时意外添加了“匿名用户”。您必须从 mysql 数据库中删除该用户:

>delete from mysql.user where User='';

然后创建一个可以来自任何主机的新“root”用户: >create user 'root'@'%' identified by 'your_new_password_here';

接下来给自己全权:

>grant all on *.* to 'root'@'%'; flush privileges;

(如果我没记错的话,授予权限必须由服务器完成,不允许远程客户端。)

这将使得只有您的 root 和密码才有效。 secure_installation 选项之前曾让我感到困惑。无论如何,手动更适合理解。

至于您的连接问题,您可能需要更改绑定地址。 mysql/mariadb 带有默认值bind_address=127.0.0.1.,基本上是 localhost。所以只有那台机器。要允许其他计算机,请在服务器上将其更改为:bind_address=0.0.0.0

你可以从 mysql 确定你当前的bind_address。使用新的 root 和密码登录服务器,然后: >show variables like 'bind_address'; 您将看到如下内容:

| Variable_name | Value   |
+---------------+---------+
| bind_address  | 0.0.0.0 |
+---------------+---------+

如果不是 0.0.0.0,则需要更改它。

找到 .cnf 文件可能很棘手。例如,我的位于: /etc/mysql/mariadb.conf.d/50-server.cnf 但我认为这与版本/发行版(?)有很大不同,因为很多人都很难找到它。

你在这里所做的就是将其开放给任何知识产权。如果您需要更安全,您可以添加客户端 IP 或添加多个 IP。但随后它将仅限于这些。 (我总是使用 0.0.0.0 和一个好的密码,这就是我所需要的。)

相关内容