我想在我的PC(使用Windows 8.1 x64)上仅安装MySQL服务器,而没有Workbench或其他工具。所以我.zip
从dev.mysql.com/downloads下载了归档文件。它是x86_64版本5.7.9(MySQL Community Server(GPL))上Win64的下载。
我将其安装为Windows服务,但没有mysql
数据库information_schema
。所以我执行了这个:
mysql_upgrade.exe --upgrade-system-tables
并mysql
创建了数据库。但是与此同时,root用户也发生了一些事情,因为我无法再访问mysql
了。
因此,我决定重设此突然出现的密码(因为在此之前我没有密码)。我在官方手册中建立了以下解决方案,我像这样启动了服务器:
mysqld.exe --skip-grant-tables --console
然后我mysql
没有密码就打开了:
mysql.exe –u root
然后尝试重置根密码:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD(‘passhere');
但是我得到了这个错误:
错误1131(42000):您将MySQL作为匿名用户使用,不允许匿名用户更改密码”。
这是什么?我如何匿名?所有命令均在cmd.exe
管理员下执行。
在这种情况下,我应该怎么做才能重置根密码?
更新1:我尝试检查当前用户:
SELECT USER(), CURRENT_USER();
这给出了:
+--------+----------------+
| USER() | CURRENT_USER() |
+--------+----------------+
| root@ | @ |
+--------+----------------+
太奇怪了,因为我这样开始mysql.exe -u root
。
然后我检查了用户表:
SELECT user FROM mysql.user;
这给出了:
+-----------+
| user |
+-----------+
| mysql.sys |
+-----------+
那就更奇怪了。也没有密码字段:
SELECT user, password FROM mysql.user;
错误1054(42S22):“字段列表”中的未知列“密码”
因此,我无法更改其密码。
而且我无法创建新用户:
CREATE USER 'root'@'localhost' IDENTIFIED BY 'passhere';
错误1290(HY000):MySQL服务器正在使用该
--skip-grant-tables
选项运行,因此它无法执行此语句
现在我迷路了。
更新2:我想,我从一开始就做错了一切。显然,我mysqld.exe --initialize
以某种方式错过了一个命令。
因此,这就是我通过.zip-archive安装MySQL的方法,这要感谢@RolandoMySQLDBA:
- 解压缩存档,准备
my.ini
。 - 执行
mysqld.exe --initialize
,从.err
文件中获取临时密码。 将MySQL作为服务安装并运行
mysqld --install MySQL --defaults-file="d:/path/to/mysql/my.ini"
mysql -u root -p
使用临时密码连接到它。更改临时密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEWPASSWORD';