TL;NRs
- 初始化服務時最好使用
mysqld --initialized --console命令; - MySQL8.0的配置變量與MySQL5.7不同,
[mysqld]下面設置字符集的變量名為character_set_server; - 修改密碼的命令為
alter user 'root'@'localhost'identified by '密碼';
經過
之前裝5.7沒有什么問題,結果裝8.0的時候一直無法啟動服務。

由於之前是采用mysqld --initialized -insecure命令初始化,因此一頭霧水。在改為mysqld --initialized --console命令后,發現出現了很多報錯的信息:

紅線上面這句是核心,意思是不知道你這個default-character-set變量是什么。然后對症下葯,經過搜索發現MySQL8.0的配置變量與MySQL5.7不同,[mysqld]下面設置字符集的變量名為character_set_server而非default_character_set([mysql]下依然為default_character_set)。
下面那句話的意思是創建的data文件夾已經沒用了,可以刪除(重新初始化的時候必須把舊的data文件夾刪除)。所以看上去是3個error,其實是一個error。
在修改過后,MySQL就可以正常啟動了。由於使用mysqld --initialized --console命令,會生出一個隨機密碼,使用隨機密碼登錄后,需要使用alter user 'root'@'localhost'identified by '密碼';命令修改密碼,否則無法使用MySQL。

在修改過密碼后,就可以正常使用了。

相關命令
mysqld --initialized -insecure:初始化MySQL,並且默認密碼為空;mysqld --initialized --console:初始化MySQL;mysqld --install:安裝MySQL服務;mysqld -remove:刪除MySQL服務;mysql -u 用戶名 -p:登錄MySQL;alter user 'root'@'localhost'identified by '密碼';:修改管理員用戶的密碼;
配置文件
最后,附上配置文件my.ini:
# CLIENT SECTION
[mysql]
default_character_set=utf8
[client]
port=3306
# SERVER SECTION
[mysqld]
port=3306
basedir="D:\mysql"
datadir="D:\mysql\data"
character_set_server=utf8
default-storage-engine=INNODB
