Linux配置MySQL环境
- 一、下载
- 1. 官网下载MySQL
- 2. 百度网盘快速下载MySQL
- 二、安装
- 1、通过 Xftp 将 MySQL 安装包拷贝到 Linux
- 2、解压缩
- 3、安装 common、libs、client、server
- 4、初步连接
- 三、卸载
- 四、常用设置
- 1. 修改 root 用户密码
- 五、使用新密码登录
- 六、开启远程访问
- 七、开放 3306 端口
- 八、MySQL 安装默认使用美国的时区,北京时间比美国晚 8 小时
一、下载
1. 官网下载MySQL
官网:https://www.mysql.com/
进入官网之后点击 DOWNLOADS
进入页面 ( 在这里我们选择社区版) ,点击 MySQL Community (GPL) Downloads »
这里选择 Download Archives
进入页面,选择 MySQL Community Server
根据你服务器的配置选择,我服务器是 CentOS 7 所以 Operating System 选择 Red Hat Enterprise Linux / Oracle Linux ,OS Version 选择 Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86,64-bit)
,选择第一个点击 Download
下载。
2. 百度网盘快速下载MySQL
以下我也提供了 MySQL 的安装包供大家使用:
链接:MySQL 8 Linux 百度网盘下载
提取码:1ef8
二、安装
1、通过 Xftp 将 MySQL 安装包拷贝到 Linux
cd 到 local 文件夹
cd /usr/local
创建mysql文件夹
mkdir mysql
然后上传之前下载好的 Linux 下 MySQL 的安装包,使用 rz 命令(有些终端工具是可以直接上传文件的,比如 FinalShell)
(PS : 本文中,我就是使用FinalShell把文件拖入到mysql文件夹中的
)
ls查看
2、解压缩
在该目录下再创建一个 mysql-8.0.26 文件夹,并且将安装包解压到该文件夹中
# 在当前目录下(mysql)下创建一个 mysql-8.0.26 文件夹
mkdir mysql-8.0.26
# 解压安装包到该目录下
tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar -C mysql-8.0.26
PS: 为什么命令没有加’z
',写成‘tar -zxvf
’ ; 是因为这个文件不是gz压缩包。
解压后如图:
解压完成之后可以切换到 mysql-8.0.26 目录下查看解压后的文件
3、安装 common、libs、client、server
删除自带的 mariadb
先查看系统有没有mariadb。 (PS:如果自带的没有删除直接安装,后面安装common、libs、client、server可能会报错)
rpm -qa | grep mariadb
输入如下指令删除
rpm -e mariadb-libs-5.5.44-2.el7.centos.x86_64 --nodeps
输入如下安装命令行,安装common、libs、client、server
rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm --nodeps --forcerpm -ivh mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm --nodeps --forcerpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm --nodeps --forcerpm -ivh mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm --nodeps --forcerpm -ivh mysql-community-devel-8.0.26-1.el7.x86_64.rpm --nodeps --forcerpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm --nodeps --forcerpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm --nodeps --force
如下图所示:
PS注意: 如果有冲突,命令后面加上这个命令:
--nodeps 表示不检查依赖关系,即忽略依赖关系进行升级。
--force 表示强制进行升级,即强制覆盖原有软件包。
例如:
rpm -ivh mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm --nodeps --force
4、初步连接
输入如下代码, 初始化MySQL。注意是mysqld
mysqld --initialize
rpm 安装 MySQL 会自动生成一个随机密码,可在 /var/log/mysqld.log 这个文件中查找该密码
- 授权防火墙
按顺序输入如下指令
1.目录授权
chown mysql:mysql /var/lib/mysql -R; 2.启动mysql服务
systemctl start mysqld.service;3.设置MySQL服务在系统重启后自动启动
systemctl enable mysqld;
6、查看数据库的初始化密码
输入指令
# 获取MySQL临时密码 (本次我使用的这个)
grep 'temporary password' /var/log/mysqld.log
或者
cat /var/log/mysqld.log | grep password
7、登录数据库
输入指令
mysql -uroot -p
然后再复制上面的密码
注意:
写了密码后密码是不显示的,不要以为自己没有写入
三、卸载
卸载 MySQL 前需要先停止 MySQL
停止命令:
systemctl stop mysqld
停止 MySQL 之后查询 MySQL 的安装文件:
rpm -qa | grep -i mysql
卸载上述查询出来的所有的 MySQL 安装包
rpm -e mysql-community-client-5.7.27-1.el7.x86_64 --nodeps
rpm -e mysql-community-client-plugins-8.0.32-1.el7.x86_64 --nodeps
rpm -e mysql-community-libs-8.0.32-1.el7.x86_64 --nodeps
rpm -e mysql-community-devel-8.0.32-1.el7.x86_64 --nodeps
rpm -e mysql-community-server-8.0.32-1.el7.x86_64 --nodeps
rpm -e mysql-community-common-8.0.32-1.el7.x86_64 --nodeps
rpm -e mysql-community-libs-compat-8.0.32-1.el7.x86_64 --nodeps
rpm -e mysql-community-client-8.0.32-1.el7.x86_64 --nodeps
删除MySQL的数据存放目录
rm -rf /var/lib/mysql/
删除MySQL的数据存放目录
rm -rf /etc/my.cnf.rpmsave
四、常用设置
1. 修改 root 用户密码
如果你觉得 MySQL 自动生成的密码太难记忆的话,可以连接 MySQL 之后进行修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
这里可能会提示 Your password does not satisfy the current policy requirements,意思是您的密码不符合当前规定的要求,你要么就把你的密码设置得复杂点,要么就去降低密码的校验规则。
在 Linux 上安装 MySQL 时会自动安装一个校验密码的插件,默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。修改密码时新密码是否符合当前的策略,不满足则会提示ERROR
官网
上能查到这个密码校验的规则,文档中搜索:validate_password
所以可以将这个限制密码位数设小一点,复杂度类型调底一点
# 将密码复杂度校验调整简单类型
(当validate_password.policy为0时,表示不进行密码复杂度校验,任何长度的密码都可以通过校验。)
set global validate_password.policy = 0;# 设置密码最少位数限制为 4 位
set global validate_password.length = 4;
PS:注意虽然更改了默认的密码校验难度和长度 (比如默认为8位,改成了4位。难度改成0) ,但是在第一次重新设置密码时候,
可能仍然出现错误:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements,此时必须第一次设置密码长度为8位才不报错
,更改密码成功后才能查看validate_password插件的以下参数,当然,validate_password插件必须已经安装,MySQL5.7是默认安装的。
参考:MySQL 8 密码校验设置调整说明
简单的密码设置成功
查看MySQL数据库中与密码验证相关的变量 【☆☆☆】
SHOW VARIABLES LIKE 'validate_password%';
五、使用新密码登录
退出mysql , 输入exit;命令
exit;
输入指令重新登陆
mysql -uroot -proot
六、开启远程访问
默认的 root 用户只能当前节点localhost访问,是无法远程访问的,我们还需要创建一个新的账户,用于远程访问
语法格式:CREATE USER <用户名> [ IDENTIFIED ] BY [ PASSWORD ] <口令>
# mysql 8.0 以下
create user 'root'@'%' IDENTIFIED BY '2023root';
# mysql 8.0
create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '2023root';
按顺序执行如下代码
# 1.创建新的用户 用来远程访问
create user 'root'@'%' identified with mysql_native_password by '2023root';# 2.授权root用户所有的权限( '并且加上 with grant option ,表示该用户可以授予权限给其他用户 ')
grant all privileges on *.* to 'root'@'%' with grant option; (或者输入这个命令, 也是授权所有权限,不过不可给其他用户授权:grant all on *.* to 'root'@'%';)# 3.使修改的设置生效(并且不需要重启MySQL服务)
flush privileges;
步骤图如下:
PS: mysql8.0 的默认密码验证不再是 password 。所以在创建用户时,create user ‘username’@‘%’ identified by ‘password’; 客户端是无法连接服务的,所以在创建用户的时候需要加上 WITH mysql_native_password
创建完用户之后还需要给用户分配权限,这里我将 root
这个用户分配了所有的权限
设置生效
七、开放 3306 端口
先输入 exit; 退出mysql,然后按顺序输入如下代码 【☆☆☆】
# 1.用于将 TCP 端口 3306 添加到防火墙的公共区域(public zone),
# 以便允许外部流量访问 MySQL 数据库。--permanent 选项表示修改将永久生效,即使系统重新启动。firewall-cmd --zone=public --add-port=3306/tcp --permanent# 2.用于重启防火墙服务,以便使之前的修改立即生效。
systemctl restart firewalld.service# 3.用于重新加载防火墙配置文件,以便使之前的修改立即生效。它与重启防火墙服务的效果相同,但是不会停止或重新启动防火墙服务。
firewall-cmd --reload
八、MySQL 安装默认使用美国的时区,北京时间比美国晚 8 小时
先输入mysql -uroot -p 登录数据库,
mysql -uroot -p
再执行如下代码
set global time_zone='+8:00';