windows下64位MySQL8的安装
一、下载mysql 64位压缩文件
下载后解压缩,解压后的目录如:D:\mysql-8.0.21-winx64
注意:安装前要提前安装最新2019 vc++运行库VC_redist.x64.exe
二、在解压缩根目录中手工建立my.ini,编码格式用utf-8,内容如下:
[mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=D:\mysql-8.0.21-winx64 # 设置mysql数据库的数据的存放目录 datadir=D:\mysql-8.0.21-winx64\Data # 允许最大连接数 max_connections=200 # 允许连接失败的次数。 max_connect_errors=10 # 服务端使用的字符集默认为utf8mb4 character-set-server=utf8mb4 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 #mysql_native_password default_authentication_plugin=mysql_native_password #指定不需要ONLY_FULL_GROUP_BY sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8mb4 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8mb4
不需要手动创建Data文件夹
三、初始化
用管理员进入cmd console,进入D:\mysql-8.0.21-winx64\bin目录执行如下命令:
mysqld --initialize --console
或者
mysqld --defaults-file=E:\green\mysql-8.0.21-3306\my.ini --initialize --console
运行后显示如下,
红色部分为初始化时生成的root口令
四、将mysql加入到windows服务
mysqld --install [服务名](服务名可以不加默认名称为“mysql”)
或者
mysqld --install mysql --defaults-file=E:\green\mysql-8.0.21-3306\my.ini
五、启动服务
net start mysql
六、修改root口令
执行命令:mysql -u root -p
输入第三步中生成的口令进入mysql命令行,执行如下命令,将root口令修改成root:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
通过以上步骤,即可完成windows下64位MySQL的安装
七、同一台机器下安装两个Mysql实例
端口3306配置步骤同上,假定要配置一个3307端口的mysql,步骤如下:
1、解压mysql的压缩包到另外一个目录E:\green\mysql-8.0.21-3307,配置文件my.ini(linux下为my.cnf,位于/etc/my.cnf)
1 [mysqld] 2 # 设置3307端口 3 port=3307 4 # 设置mysql的安装目录 5 basedir=E:\green\mysql-8.0.21-3307 6 # 设置mysql数据库的数据的存放目录 7 datadir=E:\green\mysql-8.0.21-3307\Data 8 # 允许最大连接数 9 max_connections=200 10 # 允许连接失败的次数。 11 max_connect_errors=10 12 # 服务端使用的字符集默认为utf8mb4 13 character-set-server=utf8mb4 14 # 创建新表时将使用的默认存储引擎 15 default-storage-engine=INNODB 16 # 默认使用“mysql_native_password”插件认证 17 #mysql_native_password 18 default_authentication_plugin=mysql_native_password 19 #指定不需要ONLY_FULL_GROUP_BY 20 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION 21 [mysql] 22 # 设置mysql客户端默认字符集 23 default-character-set=utf8mb4 24 25 [client] 26 # 设置mysql客户端连接服务端时默认使用的端口 27 port=3307 28 default-character-set=utf8mb4
2、进入E:\green\mysql-8.0.21-3307\bin,执行:mysqld --initialize --console,执行完成后记住临时密码
3、安装服务:mysqld --install mysql3307,mysql3307就是服务名称,删除服务命令(sc delete mysql3307)
4、启动服务:net start mysql3307
5、修改密码:步骤同步骤“六”
附:解决“Expression #2 of SELECT list is not in GROUP BY clause........ which is not functionally dependent on columns in GROUP BY clause;this is incompatible with sql_mode=only_full_group_by”错误方案
错误原因:
这个错误一般发生在mysql 5.7以及 5.7以上的版本中,其原因是mysql的默认配置中,sql_mode="ONLY_FULL_GROUP_BY" 这个配置严格执行了 'SQL92标准',所以很高网站维护人员在升级mysql版本时,都会修改 sql_mode 的配置,使其能兼容。
解决办法:
需修改my.ini配置文件,通过手动在 [mysqld] 下面添加sql_mode的方式强制指定不需要ONLY_FULL_GROUP_BY属性
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION