【Mysql】CentOS7 安装mysql8.0(RPM方式)
前言:最近在某个项目上,需要在linux服务器上安装数据库,最初时通过YUM的方式安装数据库,结果发过字符集异常。
经调查发现,我开发电脑上使用的Mysql版本时8.0.15,但是通过YUM安装后,会自动安装为最新的8.0.32。
结果开发时设计的库表字段都是utf8,实际上是utf8mb4;但是在8.0.32版本中,utf8被默认为是utf8mb3,因此从开发环境导出后导入生产环境,程序就报错了。
基于以上原因,不能采用YUM的方式安装Mysql数据库,只能通过RPM的方式安装数据库。
1.下载RPM包
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.15-1.el7.x86_64.rpm-bundle.tar
2.解压RPM包
cd mysql-rpm tar xf mysql-8.0.15-1.el7.x86_64.rpm-bundle.tar ls
3.安装RPM包
rpm -iv mysql-community-common-8.0.15-1.el7.x86_64.rpm rpm -iv mysql-community-libs-8.0.15-1.el7.x86_64.rpm rpm -iv mysql-community-libs-compat-8.0.15-1.el7.x86_64.rpm rpm -iv mysql-community-client-8.0.15-1.el7.x86_64.rpm rpm -iv mysql-community-server-8.0.15-1.el7.x86_64.rpm
4.修改Mysql配置文件
注:此步需要在安装好MySQL后,启动mysql前执行,如果mysql已经运行,那么将无法修改配置,需要卸载后重装。
打开/etc/my.cnf,修改mysql配置文件。
[client] default-character-set = utf8mb4
[mysql] #设置mysql数据库客户端默认字符集 default-character-set = utf8mb4
[mysqld]
lower_case_table_names=1
bulk_insert_buffer_size = 64M
default_authentication_plugin=mysql_native_password
innodb_buffer_pool_size=4G
innodb_file_per_table=1
join_buffer_size=2M
max_allowed_packet=1024M
sort_buffer_size=2M
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
collation-server = utf8mb4_unicode_ci
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
sql_mode='NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES'
# 开启作业
event_scheduler = ON
# 数据目录
datadir=/home/mysql/data
# 日志地址
log-error=/home/mysql/log/mysqld.log
5.根据配置文件中的目录地址,新建数据文件夹和日志文件夹
mkdir /home/mysql mkdir /home/mysql/data mkdir /home/mysql/log touch /home/mysql/log/mysqld.log
6.修改数据文件夹和日志文件夹的权限
因为修改数据目录和日志地址后,SELinux会对mysql的访问目录权限进行限制,因此要进行一下处理。
sudo chown -R mysql:mysql /home/mysql/data sudo chown -R mysql:mysql /home/mysql/log sudo chown -R mysql:mysql /home/mysql/log/mysqld.log semanage fcontext -a -t mysqld_db_t "/home/mysql(/.*)?" restorecon -Rv /home/mysql
7.初始化Mysql
mysqld --initialize --user=mysql
8.启动MySQL服务并设置开机启动
$ systemctl start mysqld
$ systemctl enable mysqld
$ systemctl daemon-reload
9.修改root本地登录密码
1)查看mysql密码
$ grep 'temporary password' /home/mysql/log/mysqld.log
2)连接mysql
$ mysql -uroot -p
3)修改密码【注意:后面的分号一定要跟上】
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'XXXXX';