前言:最近在某个项目上,需要在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[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.根据配置文件中的目录地址,新建数据文件夹和日志文件夹
[mysql] #设置mysql数据库客户端默认字符集 default-character-set = utf8mb4
mkdir /home/mysql mkdir /home/mysql/data mkdir /home/mysql/log touch /home/mysql/log/mysqld.log
6.修改数据文件夹和日志文件夹的权限 因为修改数据目录和日志地址后,SELinux会对mysql的访问目录权限进行限制,因此要进行一下处理。 具体可以参考:https://cloud.tencent.com/developer/article/1772569
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'; 标签:8.0,log,Mysql,CentOS7,mysql8.0,mysql,home,rpm,mysqld From: https://www.cnblogs.com/nonkicat/p/17099479.html