请分享在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生活!