Centos7安装Mysql5.7
前言
安装环境:
- 系统:CentOS Linux release 7.9.2009 (Core)
- mysql:5.7.38
- SSH工具:FinalShell
此文章为我自己最近在centos中安装mysql的过程记录,以免下次想要安装时还得到处搜教程;此文章仅供大家在安装过程中参考,因每个人的系统、环境等因素不同,不确保照搬此教程一定能成功。另外,个人能力有限,文章中可能会存在错误或表述不当的地方,大家可以在评论区提出,理性讨论。
1.下载安装包
点击下载地址 ,选择合适的tar包下载到本地,再上传至服务器/usr/local目录下
2.卸载centos7自带的Mariadb
查看系统自带的Mariadb
[root@localhost /]# rpm -qa|grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
卸载自带的mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
3.解压mysql tar包
cd /usr/local
##解压
tar -zxvf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
##修改文件夹名称
mv mysql-5.7.38-linux-glibc2.12-x86_64 mysql-5.7.38
这里解压跳过了一步,如果下载的是tar包,则先用tar -xvf mysql-5.7.38-linux-glibc2.12-x86_64.tar
解压,解压后会出现两个tar.gz的压缩包,一个mysql-XXXX.tar.gz,一个mysql-test-XXX.tar.gz;按照上边命令解压第一个压缩包即可,带test的包暂时不知道有什么用。
4.创建mysql用户组
-
查看是否有mysql用户组和mysql用户
cat /etc/group | grep mysql cat /etc/passwd |grep mysql
-
创建mysql用户组和mysql用户
groupadd mysql useradd -r -g mysql mysql
-
修改mysql-5.7.38目录下所有文件夹所属的用户组、用户以及权限
chown -R mysql:mysql /usr/local/mysql-5.7.38 chmod -R 755 /usr/local/mysql-5.7.38
创建mysql用户组和mysql用户的原因:
当让MySQL运行的时候使用一个独立的账号和用户组时,该用户和用户组权限是可以控制的。当系统中文件的权限未设定给Mysql用户以及用户组时,Mysql用户无法进行读写执行操作。而如果MySQL被黑了,可以通那么开始拿到的权限就是那个创建的账号而不是默认的root,我们在编译安装的时候创建一个mysql组和一个mysql用户,并把datadir和安装目录属主改为mysql。
在MySQL启动的时候,单进程mysqld,该进程的属主就是mysql,这样就保证了mysql服务的独立性,即使mysql服务被黑掉,得到了mysql用户权限,也不会影响整个系统的安全。
5.编译、安装
- 初始化
##创建数据存放目录
mkdir data
cd bin/
##初始化
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql-5.7.38/data --basedir=/usr/local/mysql-5.7.38
执行初始化命令后,会打印一些初始化信息,其中包含管理员临时密码(下图中红框内就是我的临时密码),最好记住,当然后续可以通过查日志查到
临时密码也可通过cat /var/log/mysqld.log | grep password
命令来查询,但是我查询时查不到相关信息,可能是安装期间重启过系统导致,所以最好是初始化时就将临时密码复制出来。
-
编写配置文件
vim /etc/my.cnf
## 在插入模式下编写,完成后保存,当然这个可以自己添加 如粘贴,则需将注释删掉 [mysqld] datadir=/usr/local/mysql-5.7.38/data port = 3306 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES symbolic-links=0 max_connections=400 innodb_file_per_table=1 #表名大小写不敏感,敏感为 lower_case_table_names=1
datadir的值根据实际情况自己修改
注:在此步骤中也可设置MySQL的字符集,具体配置在第十步,此步骤为可选操作,有明确字符集需求且不想后续再编辑配置的可在此步骤一次设置好;也可以后期有需要时再按照第十步的方法来设置
-
授予my.cnf755权限
chmod -R 775 /etc/my.cnf
-
修改**/usr/local/mysql-5.7.38/support-files**目录下的mysql.server ,主要修改的地方有5处
将这五个地方的路径修改为实际安装路径
6.启动服务
-
启动服务
[root@localhost support-files]# ./mysql.server start Starting MySQL.Logging to '/usr/local/mysql-5.7.38/data/localhost.localdomain.err'. SUCCESS!
-
添加软连接,重启服务
##添加软连接 ln -s /usr/local/mysql-5.7.38/support-files/mysql.server /etc/init.d/mysql ln -s /usr/local/mysql-5.7.38/bin/mysql /usr/bin/mysql ##重启mysql服务 service mysql restart
-
登录mysql 初始密码为初始化时生成的临时密码
mysql -u root -p
-
登录后需要重新设置密码
set password for root@localhost = password('your password');
将’your password’内容替换为自己的新密码
-
开放远程连接
use mysql; update user set user.Host='%' where user.User='root'; flush privileges;
7.设置开机自启
##将服务文件拷贝到init.d下,并重命名为mysql
cp /usr/local/mysql-5.7.38/support-files/mysql.server /etc/init.d/mysqld
##赋予可执行权限
chmod +x /etc/init.d/mysqld
##添加服务
chkconfig --add mysqld
##显示服务列表
chkconfig --list
8.对外开放3306端口
##开放3306端口命令
firewall-cmd --zone=public --add-port=3306/tcp --permanent
##配置立即生效
firewall-cmd --reload
##查看端口是否成功开放 yes为开放 no为未开放
firewall-cmd --query-port=3306/tcp
9.连接测试
可在宿主机利用navicat进行连接测试,在此就不再赘述。
10.设置mysql字符集
此步骤为可选步骤
-
查看当前字符集
通过
mysql -uroot -p
登录mysql(回车后输入的密码为第6步中设置的密码)show variables like '%character%';
可以看到一些字符集还不是utf8/utf8mb4
-
设置字符集
此步骤需要退出mysql,回到系统bash终端,打开mysql配置文件根据需要进行配置
vim /etc/my.cnf
根据实际情况输入一下配置(可将utf8mb4改成utf8)根据自己实际情况
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_general_ci init_connect='SET NAMES utf8mb4'
保存退出后,重启mysql服务即可
mysql中utf8和utf8mb4相关问题可参考:mysql字符集之utf8和utf8mb4的使用问题和mysql使用utf8mb4经验吐血总结