1、Linux系统安装教程
1.1)MySQL离线安装
1.2)MySQL在线安装
2、Windows系统安装教程
2.1)MySQL免安装版配置
2.2)MySQL安装版配置
3、MySQL密码安全策略修改
一、Linux系统安装MySQL
系统版本:CentOS 7
Mysql版本:mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
1、Linux离线安装Mysql
1、 查看是否已经安装 Mysql
rpm -qa | grep mysql
如果没有什么返回信息,说明没有安装 Mysql
如图所示就是安装了MySQL
2、 查看是否已经安装 mariadb
CentOS 7可视化安装会默认安装该数据库,安装MySQL前需要卸载该数据库
rpm -qa | grep mariadb
删除mariadb数据库
rpm -e --nodeps mariadb-libs
1)、MySQL下载
1.1)首先打开MySQL官网,选择下载页面 (DOWNLOADS) ;
1.2)在下载页面选择社区版 (MySQL Community ),点击进入;
1.3)在社区版下载界面选择 MySQL Community Server
1.4)下载界面有新版和老版可以选择,我这里选择老版本。
1.5)在老版本界面中 Product Version 选择版本8.0.20; Operating System 选择系统 Linux - Generic ;OS Version 系统类型默认 ALL 即可;版本和系统根据需要自行选择。
2)、MySQL安装
2.1)、上传到服务器后解压
首先启动我们Linux系统,通过Xshell远程连接到系统,然后打开Xftp软件,上传我们下载的MySQL安装包到 /usr/local/src 目录中。目录位置和安装位置大家可以自行选择
上传完成后通过命令进行解压。首先进入到文件目录 cd /usr/local/src。需要注意的是我们下载的文件格式是 tar.xz 结尾的,和老版本的 tar.gz 解压命令不一样。
使用 xz -d file.tar.xz 命令解压外围的 xz
通过 ls 命令查看外围的 xz 已经解压
使用 tar -xvf file.tar 命令解压tar 文件;
#重命名为 mysql-8.0.20
使用命令 mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql-8.0.20 修改文件名称;
2.2)、创建用户组
MySQL 开在 root 上意味着它可以在系统的任何位置写任何文件,MySQL 开在 mysql 用户上,保证它对系统大部分位置不可写,从而 MySQL 即使被攻击,也可以限制它对整个系统的影响。
#检查 mysql 用户组是否存在
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
#创建用户组
groupadd mysql
# -r 参数表示 mysql 用户是系统用户,不可用于登录系统,创建用户 mysql 并将其添加到用户组 mysql 中
useradd -r -g mysql mysql
2.3)、分配用户组
chown -R mysql /usr/local/src/mysql-8.0.20/ # 将文件的所有属性改为 mysql 用户
chgrp -R mysql /usr/local/src/mysql-8.0.20/ # 将组属性改为 mysql 组
2.4)、创建数据目录并赋予权限
mkdir -p /data/mysql #在根目录创建数据目录
chown mysql:mysql -R /data/mysql # 将文件的所有属性改为 mysql 用户
3)、MySQL配置
3.1)、修改配置文件
vi /etc/my.cnf
这是一个简单的模版
[mysqld]
bind-address=0.0.0.0 #如果要远程控制,该设置就默认四个0
port=3306
user=mysql
basedir=/usr/local/src/mysql-8.0.20
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
[client]
port=3306
socket=/var/lib/mysql/mysql.sock #默认的客户端路径是/tmp/mysql.sock,不设置连接会报错
3.2)、初始化数据库
参数: --basedir 为mysql解压目录,–datadir 为mysql数据存放目录。(注意安装路径是否一致)
cd /usr/local/src/mysql-8.0.20/bin/
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/src/mysql-8.0.20/ --datadir=/data/mysql/ --user=mysql --initialize
3.3)、查看数据库初始密码
通过命令查看
cat /data/mysql/mysql.err
也可以通过Xftp直接打开 mysql.err 文件查看
3.4)、加入到系统服务并启动mysql
3.4.1)方法一:cp /usr/local/src/mysql-8.0.20/support-files/mysql.server /etc/init.d/mysql
service mysql start
3.4.2)方法二:
systemctl 管理MySQL服务
#在/usr/lib/systemd/system/路径下创建mysql.service
vi /usr/lib/systemd/system/mysql.service
[Unit]
Description=MySQL server
After=syslog.target network.target
[Service]
User=mysql
Group=mysql
Type=forking
TimeoutSec=0
#PermissionsStartOnly=true
#这里修改成你自己的解压目录
ExecStart=/usr/local/src/mysql-5.7.20/bin/mysqld --defaults-file=/etc/my.cnf --daemonize
LimitNOFILE = 65535
Restart=on-failure
RestartSec=3
RestartPreventExitStatus=1
PrivateTmp=false
[Install]
WantedBy=multi-user.target
重新加载systemd配置
systemctl daemon-reload
常用命令
启动mysql服务
systemctl start mysqld
停止mysql服务
systemctl stop mysqld
重新启动mysql服务
systemctl restart mysqld
查看mysql服务状态
systemctl status mysqld
mysql服务加入自启动
systemctl enable mysqld
停止mysql服务自启动
systemctl disable mysqld
查询mysql服务是否开机自启动
systemctl is-enabled mysqld
如果不加入的话启动MySQL就使用以下方法,进入到MySQL的 support-files 的文件目录下
cd /usr/local/src/mysql-8.0.20/support-files/ #进入support-files目录下
./mysql.server start #开启MySQL服务
./mysql.server stop #关闭MySQL服务
3.5)、登录mysql
登录之前一定要先启动MySQL服务
3.5.1)登录方式一
进入mysql安装文件的bin目录
cd /usr/local/src/mysql-8.0.20/bin/
./mysql -u root -p
输入数据库初始密码登录
3.5.1)登录方式二
配置环境变量
#打开~/.bashrc文件
vi ~/.bashrc
#在文件末尾加上以下行
export PATH=$PATH:/usr/local/src/mysql-5.7.20/bin
#使修改的环境变量生效
source ~/.bashrc
配置完成后不用到mysql目录下可以直接使用msyql -uroot -p命令登录
3.6)、修改mysql初始密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Ab123456';
3.7)、查看mysql端口号
show global variables like 'port';
如果端口号显示为 “ 0 ” ,检查配置文件 my.cnf 中是否有“skip-grant-tables”,注释掉该配置就可显示配置的端口号。
3.8)、使用工具连接MySQL报错解决办法
MySQL 异常: "Host 'xxx' is not allowed to connect to this MySQL server"
在使用工具远程连接MySQL数据库时报错,需要检查如下几个地方:
3.8.1)、Linux系统防火墙原因
以下截图中的操作均在Centos7上进行。
1.1).查看防火墙状态的命令
systemctl status firewalld
防火墙原因造成的数据库端口不通有两种处理方式:
方法一、在开启防火墙的状态下,放开数据库使用端口;
#开启指定的端口号
firewall-cmd --add-port=3306/tcp --permanent
# 开启完成之后重新加载配置
firewall-cmd --reload
#关闭指定的端口号
firewall-cmd --remove-port=8080/tcp --permanent
# 关闭完成之后重新加载配置
firewall-cmd --reload
.查看防火墙规则
firewall-cmd --list-all # 查看全部信息
firewall-cmd --list-ports # 只看端口信息
方法二、直接关闭防火墙;
1.2).关闭防火墙命令
1.2.1)暂时关闭防火墙(使用 reboot 命令重启后会恢复到原来的状态)
systemctl stop firewalld
1.2.2)永久性关闭防火墙(重启将不会恢复到原来的状态,并且需要重启后(reboot 命令)才能生效)
systemctl disable firewalld
3.8.2)、数据库是否授权其他设备登录
use mysql;
select host from user where user='root';
host设置为localhost表示,只有本地可以通过root用户访问数据库
host修改成%表示,所有主机都可以通过root用户访问数据库
update user set host = '%' where user = 'root';
3.8.3)、数据库是否授权远程登录用户
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
参考示例
grant all PRIVILEGES on db_name.* to ‘username’@‘xxx.xxx.xx.x’ ;
all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如:select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。
db_name.* 表示上面的权限是针对于哪个表的,db_name指的是数据库名称,后面的 * 表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。
username表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。
xxx.xxx.xx.x 表示允许远程连接的 IP 地址,你的IP,如果想不限制链接的 IP 则设置为“%”即可。
3.8.4)、刷新权限,使更改生效
FLUSH PRIVILEGES;
2、Linux通过yum安装配置Mysql(服务器有网络)
1)、MySQL下载
1、找到对应linux的版本进行下载
[root@CentOS7 ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
2、在MySQL官网社区版下载界面中找到 MySQL Yum Repository
3、选择系统对应的版本,点击 Downloads ,在弹出的界面如图所示选择后 复制链接地址
4、在centos系统中输入wget,然后粘贴复制的下载地址;
#使用wget下载mysql
wget https://repo.mysql.com//mysql84-community-release-el7-1.noarch.rpm
如果显示wget未找到命令,则需要先安装wget,然后再次执行上面命令;
yum -y install wget
结果图
2)、MySQL安装
2.1)、通过yum安装
通过yum安装方法,会直接添加mysql环境变量和启动服务
yum -y install mysql84-community-release-el7-1.noarch.rpm
2.2)、安装MySQL服务器:**community-server**
yum -y install mysql-community-server
2.3)、启动服务并查看服务状态
systemctl start mysqld #一定要启动服务!
systemctl status mysqld #查看服务状态
2.4)、 获取密码
登录 MySQL 必须要通过密码,此时 root 用户的密码可以通过以下命令在日志文件中获取:
grep "password" /var/log/mysqld.log
2.5)、 登录
二、Windows系统安装步骤
1)、免安装版配置步骤
系统版本:Windows10
Mysql版本:mysql-8.0.20-winx64.zip
1.1)下载
1.1.1)在社区版下载界面选择 MySQL Community Server
1.1.2)选择下载版本,点击 Download 下载;
1.2)安装
1.2.1)免安装版下载完成后直接解压
我这里解压到了C盘的mysql文件夹,我们解压的文件夹是没有ini文件和data目录,这时我们需要自己创建。
1.2.2)创建配置文件和data目录
配置ini文件,配置信息如下
[Client]
#设置3306端口
port = 3306
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=C:\mysql
# 设置mysql数据库的数据的存放目录
datadir=C:\mysql\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
early-plugin-load=""
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
1.2.3)编辑 my.ini 文件,修改mysql安装目录及数据存放目录。
1.3)环境变量配置
1.3.1)右键 此电脑 ,选择 属性 ,在弹出的界面选择 高级系统设置 。
1.3.2)在系统属性界面,选择 环境变量 ;
1.3.3)在环境变量界面中选择 系统变量 并 新建 ;
1.3.4)新建系统变量 MYSQL_HOME
1.3.5)在系统变量中选择 Path 变量,点击 ** 编辑** 。
1.3.6)并将 ;%MYSQL_HOME%\bin 添加到 Path 变量值后面,注意这里的标点符号为英文符号
1.4)安装MySQL服务
1.4.1)以"管理员身份"运行命令提示符cmd
1.4.2)cd 进入 mysql 目录
1.4.3)初始化MySQL
mysqld --initialize-insecure --user=mysql #该命令要在bin目录下执行
进入bin目录并初始化MySQL
1.4.4)安装服务
mysqld --install
1.4.5)启动mysql服务
net start mysql
1.4.6)登录mysql
这里不需要输入密码,直接按回车键即可
1.4.7)设置mysql登录密码
use mysql;
alter user 'root'@'localhost' identified by 'Ab123456';
2)安装版配置步骤
系统版本:Windows10
Mysql版本:mysql-installer-community-8.0.37.0.msi
2.1)下载
2.1.1)打开官网下载界面,点击MySQL Community(GPL)Downloads
2.1.2)选择 MySQL Installer for Windows
2.1.3)选择下载版本,点击 Download 下载;
2.1.4)点击No thanks, just start my download,这里可以跳过注册,直接下载。
2.2)安装
2.2.1)Choosing a Setup Type
- “Developer Default”是开发者安装
- “Server only”仅作为服务器安装
- “Clientonly”仅作为客户端安装
- “Full”是完整安装
- “Custom”是自定义安装
选择 Server only ,点击 Next 。
2.2.2)Path Conflicts
点击 Next 。
2.2.3)Installation
选择 Execute 等待安装MySQL Server。
安装完成后点击 Next 。
2.2.4)Type and Networking
这里默认即可,点击 Next 。
2.2.5)Authentication Method
2.2.6)Accounts and Roles
设置 root 用户密码,密码规则按照上一步选择的模式进行设置,如果需要新增用户可以在下面设置,点击 Next 。
User Name:账号名称;
Host:需要远程连接默认即可,只要本地连接就选“localhost”;
Role:角色,下拉可以选择不同的权限角色。
2.2.6)Windows Service
点击 Next 。
2.2.7)Server File Permissions
点击 Next 。
2.2.8)Apply Configuration
选择 Execute 。
完成后,选择 Finish 。
点击 Next 。
2.2.9)Installation Complete
点击 Finish ,完成安装。
2.3)登录
2.3.1)使用Navicat 工具进行连接测试。
本地测试:
远程连接测试:
三、MySQL密码安全策略修改
安全策略参数和常见等级:
1、Mysql8.X常见安全策略参数
validate_password.dictionary_file #指定密码验证的文件路径;
validate_password.length #固定密码的总长度,默认为8;
validate_password.mixed_case_count #整个密码中至少要包含大/小写字母的总个数;
validate_password.number_count #整个密码中至少要包含阿拉伯数字的个数;
validate_password.policy #指定密码的强度验证等级,默认为 MEDIUM;
validate_password.special_char_count #整个密码中至少要包含特殊字符的个数;
指定密码的强度验证等级validate_password.policy 取值:
0/LOW #只验证长度;
1/MEDIUM #验证长度、数字、大小写、特殊字符;
2/STRONG #验证长度、数字、大小写、特殊字符、字典文件;
2、查看MySQL安全策略
show variables like 'validate%';
3、修改安全策略
如果MySQL还是初始密码,要先按照安全策略设置强密码,然后再修改策略;
set global 常见安全策略参数=安全策略值;
4、改完密码策略,就可以根据自己修改的策略,更改匹配策略的MySQL登录密码了