请分享在Windows上的MariaDB中出现”ERROR 1045 (28000): Access denied for user ‘root’@’localhost'”时的解决方法

首先

因为遇到了MySQL/MariaDB在第一次运行时常见的问题,并且还是Windows版本的,所以为了找到解决方案,我花了很多心思。根据参考的视频,我写下了详细的步骤。

环境

我们的环境如下所示。

OS: Windows10 64bit 21H2
MariaDB: 10.9
サービス名: MariaDB

背景 – (Background)

由于各种情况,我决定安装Windows版的MariaDB(10.9)。尽管安装本身顺利进行,但当我尝试输入mysql命令时,出现了问题。

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

这个情况开始时发生了一些混乱和困惑,人们四处奔走。

当我开始搜寻信息时…

因此,我向神、佛、谷歌神尋求了幫助…

只讨论在Linux或MacOSX上的情况

而且,

Windows版MariaDB没有mysqld_safe命令YO!

在一种让人感到沮丧而想要放弃的状态中。

唯一发现的信息是以下YouTube视频。

按照这个视频的步骤执行后,成功地从Access denied限制中解放出来了。

步骤

这是一份备忘录。

创建mysql-init.txt文件并记录完整路径

请在适当的目录下创建mysql-init.txt文件,并保存以下内容。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

这次我会把它保存在“文档”文件夹中。

将完整路径设置为C:\Users\hoge\Documents\mysql-init.txt。
将完整路径记录在某个地方。

请确认MariaDB的my.ini文件的位置并记录完整路径。

使用资源管理器等工具查找my.ini的位置。
该位置是在安装时指定的存储数据的目录。

如果数据存储在”C:\MariaDB\10.9″路径下。

C:\MariaDB\10.9\my.ini

因为这是完整路径,所以复制它并记录在某个地方。

用管理员权限打开命令提示符。

安装了MariaDB后,在Windows的开始菜单中会出现一个名为「命令提示符(MariaDB 10.9 (x64))」的选项,右键点击它会弹出一个菜单。其中,有一个选项

その他 > 管理者として実行

选择此选项时,将以管理员权限打开命令提示符。(不需要输入路径即可运行mysql等命令,非常方便!)

停止MariaDB的服务

在视频中使用服务管理器,然而命令行更为方便,无需太多麻烦。
请在之前打开的命令提示符中输入以下命令,然后按下Enter键。

net stop MariaDB

如果我们将服务名称标准为MariaDB,请逐次将其替换为其他名称。

直接执行mysqld命令

这里是关键时刻,请冷静下来。

使用先前创建的mysql-init.txt和my.ini文件来启动mysqld。

mysqld --defaults-file="C:\MariaDBData\10.9\my.ini" --init-file="C:\Users\hoge\Documents\mysql-init.txt" --console

然后,会出现如下消息。

2022-11-04 10:42:41 0 [Note] mysqld (server 10.9.3-MariaDB) starting as process 2576 ...
2022-11-04 10:42:41 0 [Note] InnoDB: Compressed tables use zlib 1.2.12
2022-11-04 10:42:41 0 [Note] InnoDB: Number of transaction pools: 1
2022-11-04 10:42:41 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2022-11-04 10:42:41 0 [Note] InnoDB: Initializing buffer pool, total size = 3.992GiB, chunk size = 63.875MiB
2022-11-04 10:42:41 0 [Note] InnoDB: Completed initialization of buffer pool
2022-11-04 10:42:41 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
2022-11-04 10:42:41 0 [Note] InnoDB: 128 rollback segments are active.
2022-11-04 10:42:41 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
2022-11-04 10:42:41 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
2022-11-04 10:42:41 0 [Note] InnoDB: log sequence number 46774; transaction id 14
2022-11-04 10:42:41 0 [Note] Plugin 'FEEDBACK' is disabled.
2022-11-04 10:42:41 0 [Note] InnoDB: Loading buffer pool(s) from M:\MariaDBData\10.9\ib_buffer_pool
2022-11-04 10:42:41 0 [Note] Server socket created on IP: '::'.
2022-11-04 10:42:41 0 [Note] Server socket created on IP: '0.0.0.0'.
2022-11-04 10:42:41 0 [Note] InnoDB: Buffer pool(s) load completed at 221104 10:42:41
2022-11-04 10:42:41 0 [Note] mysqld: ready for connections.
Version: '10.9.3-MariaDB'  socket: ''  port: 3306  mariadb.org binary distribution
2

如果这里没有错误消息,那么可以执行。

要終止程序,需要多次按下Ctrl-C键。

如果不幸发生以下错误情况,请先退出并检查修正mysql-init.txt文件。

ERROR: 1105  Bootstrap file error, return code (0). Nearest query: 'ALTER USER (略)

在视频中,我们删除了不再需要的mysql-init.txt文件,但我们将其保留下来,因为我们认为在重新安装时可能会需要它。

启动MariaDB服务。

启动已经停止的MariaDB服务。

net START MariaDB

启动mysql命令

这样就可以毫无问题地使用mysql命令了。

mysql -u root -p
(略)>mysql -u root -p
Enter password: ********
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.9.3-MariaDB mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit

恭喜你,一切顺利,已经成功启动!

最终

在Windows上运行MariaDB的人似乎很少呢…
无论如何,祝你拥有美好的MariaDB生活!

广告
将在 10 秒后关闭
bannerAds