Linux上搭建MySQL8环境
在官网下载RPM捆绑包
链接如下
https://dev.mysql.com/downloads/mysql/
根据自己的系统选择需要下载的版本,如果你和我一样是centos7请选择Linux 7版本的,上图为Linux 8版本
下载完成后上传到Linux服务器上面
tar -xvf bundle.tar; #解压捆绑包,这里捆绑包名字简写了
# 检查 mysql 是否被安装
rpm -qa | grep -i mysql # 若安装过,会输出相关包名
# 若有安装过 mysql,则删除相关文件
rpm -e [--nodeps] 包名(此处包名是上面命令查出来的名字)
先装 common
再装 libs(确保 mariadb 已卸载,centos7 默认支持 mariadb,不支持 mysql,不卸载会出现冲突)
再装 client
最后装 server
[root@localhost opt]# rpm -ivh mysql-community-common-8.0.11-1.el7.x86_64.rpm
[root@localhost opt]# rpm -e --nodeps mariadb-libs
[root@localhost opt]# rpm -ivh mysql-community-libs-8.0.11-1.el7.x86_64.rpm
[root@localhost opt]# rpm -ivh mysql-community-client-8.0.11-1.el7.x86_64.rpm
[root@localhost opt]# rpm -ivh mysql-community-server-8.0.11-1.el7.x86_64.rpm
# 如果要安装devel
先使用yum安装,再使用rpm命令安装
yum -y install devel包名;
rpm -ivh mysql-community-devel-8.0.11-1.el7.x86_64.rpm
初始化
# 都安装完毕之后,通过查看version来看是否安装成功
mysqladmin --version
# 启动之前,是否需要开启忽略大小写敏感(将表名全部转为小写)
# 这一步很重要,因为Mysql8仅仅支持在初始化的时候修改这个参数,请一定要确认好,不然后面没办法改
vi /etc/my.cnf
在配置文件写
lower_case_table_names = 1
# 安装成功后启动mysql服务
systemctl start mysqld
# 启动后查看mysql的状态
systemctl status mysqld
# 第一次进入mysql需要查看临时密码
cat var/log/mysqld.log | grep password
#通过临时密码进入mysql
mysql -uroot -p临时密码
# 修改密码,可以按需求修改密码校验强度
set global validate_password.policy=0; #设置为弱口令
set global validate_password.length=1; #密码最小长度为1
set password = "123456";
flush privileges;
# 退出mysql,通过修改的密码重新登录Mysql
mysql -uroot -p123456
到此mysql基本的安装步骤已经完成,可以自己根据需要添加用户等其他操作.
# 创建test用户,密码同为test
create user test identified by 'test';
# 授权,一般把对应需要的库的权限分配给相应的用户,这里将testDB的所有权限分配给test用户
grant all privileges on testDB.* to zhangsan@'%';
flush privileges;
数据和日志存放
我们这里使用的是rpm安装方式,所以是有默认的数据目录和日志目录
# 数据存放目录
/var/lib/mysql
# 日志存放目录
/var/log/mysqld/log
# 启动目录
/var/run/mysqld
如果想修改默认目录位置,可以在配置文件里面修改,举个栗子
# 我在根目录下面新建一个data文件夹,专门存放mysql相关的文件
mkdir /data/
cd data
# 建立三个相应的目录
mkdir mysqldata
mkdir log
mkdir run
# 将文件拷贝过来
cp -R /var/lib/mysql /data/mysqldata
cp -R /var/log/mysqld.log /data/log
cp -R /var/run/mysqld /data/run/mysqld
# 给目录授权
chown -R mysql:mysql /data
# 进入配置文件修改
vi /etc/my.cnf
# 将原来的路径注释掉,换成我们刚刚创建好的,然后再加上一点东西
datadir=/data/mysqldata/mysql
socket=/data/mysqldata/mysql/mysql.sock
log-error=/data/log/mysqld.log
pid-file=/data/run/mysqld/mysqld.pid
[mysql]
socket=/data/mysqldata/mysql/mysql.sock
[client]
socket=/data/mysqldata/mysql/mysql.sock
# 保存后重启mysql服务
systemctl restart mysqld
# 然后就完成了,可以直接登录了,数据什么的都没有变化
mysql -uroot -p123456
建库相关事项
-
MySQL8默认的字符集是utf8mb4,排序规则默认使用utf8mb4_general_ci
-
它的默认排序规则是数据大小写不敏感的,比如说’abc’和’ABC’这两个是一样的。所以如果你的项目对数据大小写敏感需要更换默认的排序规则。
使用utf8mb4_bin作为排序规则可以使数据大小写敏感。
CREATE DATABASE `test` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
请注意,当建库时指定了字符集和排序规则就不能再进行改动,所以也务必确认好字符集和排序规则。
总结
反正踩了很多坑,目前在MySQL8搭建过程中所遇到的一些情况都给大家列了出来,后续会给大家整点shell脚本实现自动化搭建MySQL环境。