windows 10 和 CentOS 8 MySQL 安装
注意事项
使用jdk11需更新MySQL8.0.16以上(包含)
MySQL 8 之前版本参考
windows 10 安装
1.下载
地址:https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.18-winx64.zip
2.安装
将 mysql-8.0.18-winx64.zip 解压到D:Program Files
将解压之后的目录mysql-8.0.18重命名为MySQL
在MySQL目录下新建my.ini 配置文件
注:utf8mb4 是utf-8的升级支持emoji库的存储及表情,请勿使用utf8 linux下出错 win10下警告[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:Program FilesMySQL
# 设置mysql数据库的数据的存放目录
datadir=D:Program FilesMySQLdata
# 允许最大连接数
max_connections=2000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
#超时设置
wait_timeout=2147483
interactive_timeout=2147483
#设置默认时区
default-time_zone ='+8:00'
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
3.配置环境变量
将D:Program FilesMySQLbin 添加到环境变量path中
4.安装服务
以管理员身份运行cmd否则会失败
执行mysqld --initialize --console
error: Found option without preceding group in config file
原因是my.ini 文件可能是UTF-8编码,打开记事本选择另存为选择编码ANSI
执行成功会显示临时密码,root@localhost: IuWlms_/B0Kp
IuWlms_/B0Kp为临时密码
安装服务mysqld --install
启动服务net start mysql
登录 mysql -u root -p回车输入密码
IuWlms_/B0Kp
修改密码
alter user 'root'@'localhost' IDENTIFIED BY '密码';
注意:密码不能为root,win10 MySQL 版本无强制密码策略(密码策略参考CentOS安装)
5.配置访问权限(允许其它主机访问)
需先登录Use mysql
Update user set host=’%’ where user=’root’;
Select host,user from user;
Flush privileges;
注意:以后的修改密码变成
alter user 'root'@'%' IDENTIFIED BY '密码';
6.卸载
将服务停止
以管理员身份运行cmd 执行mysqld --remove mysql删除
删除D:Program FilesMySQL,完成
这就是压缩包安装的好用,可执行文件卸载出错可能还需要重装系统
CentOS 8 安装
1.压缩包安装
1.1下载
1.2安装
cd /opt/packages/ 执行以下命令进行安装
rpm -ivh mysql-community-common-8.0.18-1.el8.x86_64.rpm --nodeps
rpm -ivh mysql-community-libs-8.0.18-1.el8.x86_64.rpm --nodeps
rpm -ivh mysql-community-client-8.0.18-1.el8.x86_64.rpm --nodeps
rpm -ivh mysql-community-server-8.0.18-1.el8.x86_64.rpm --nodeps
1.3编辑mysql配置文件
安装完成之后编辑my.cnf
vi /etc/my.cnf
按i在当前行编辑
注:utf8mb4 是utf-8的升级支持emoji库的存储及表情,请勿使用utf8 centos下出错 win10下警告
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
#端口
port=3306
#mysql默认的安装路径
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# 允许最大连接数
max_connections=2000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
#超时设置
wait_timeout=2147483
interactive_timeout=2147483
#设置默认时区
default-time_zone ='+8:00'
#日志输出文件
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql]
default-character-set=utf8mb4
[client]
port=3306
default-character-set=utf8mb4
按ESC键输入:wq退出并退出
1.4启动服务
启动服务:systemctl start mysqld(不建议使用service mysqld restart会重定向到systemctl start mysqld)
查看服务状态:systemctl status mysqld
查看临时密码:grep 'password' /var/log/mysqld.log | head -n 1
1.5登录
mysql -uroot -p(注意:在p后面不要跟密码,8版本会登录失败,回车再输入密码)
回车输入密码
1.6修改密码策略
只有Linux版本mysql有强制密码策略
mysql 8 和mysql7密码策略区别
mysql8 例如密码长度:set global validate_password.length=6;mysql7 例如密码长度:set global validate_password_length=6;
查看密码策略 : show variables like 'validate_password%'; (注意:必须修改密码才能查看)
只有Linux有强制密码策略
可修改的密码策略密码验证策略低要求
set global validate_password.policy=LOW;(0或LOW代表低级)
密码至少要包含的小写字母个数和大写字母个数
set global validate_password.mixed_case_count=0;
密码至少要包含的数字个数。
set global validate_password.number_count=0;
密码至少要包含的特殊字符数
set global validate_password.special_char_count=0;
密码长度
set global validate_password.length=6;
1.7 修改密码
修改过密码策略就可以使用简单的密码了
alter user 'root'@'localhost' IDENTIFIED BY '密码';
注意:密码不能使用root
注意:mysql连接失败也有可能 default_authentication_plugin=mysql_native_password 没有配置 (参考1.3默认已配置)
1.8修改mysql访问权限
登录之后
Use mysql
update user set host='%' where user ='root';
select host,user from user;
Flush privileges;
1.9防火墙开放端口
为了安全起见开放端口即可,防火墙不需要关闭
sudo firewall-cmd --list-all( 查看开放端口)
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
防护墙命令
sudo firewall-cmd --zone=public --add-service=http --permanent #添加开放的服务
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent#添加开放的端口
firewall-cmd --zone= public --query-port=80/tcp#查看是否开放
firewall-cmd --zone= public --remove-port=80/tcp --permanent# 删除
firewall-cmd --reload # 重新载入,更新防火墙规则
描述:
--zone=public#作用域
--add-port=3306/tcp#添加端口,格式为:端口/通讯协议
--permanent#永久生效,没有此参数重启后失效
1.10开启服务
systemctl enable mysqld