Centos7安装Mysql5.7

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经验吐血总结

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值