> 技术文档 > centos离线安装mysql

centos离线安装mysql


第一步 官网下载mysql

此处是官网传送门

按照自己的需要选择适合的版本,此处一安装5.7.40为例

第二步 卸载自带的数据库

rpm -qa | grep mysqlrpm -pa | grep mariadb

不存在则直接进行下一步;

如果存在:

  1. 就依次执行 yum remove mysql-xxx-xxx- ;
  2. 查找并删除mysql文件目录 find / -name mysql,如果存在则根据需求依次删除rm -rf /var/lib/mysql

第三步 上传到服务器

将下载好的安装包上传到服务器,这里直接上传到了 /usr/local  目录下

解压

tar -zxvf mysql-5.7.40-el7-x86_64.tar.gz

重命名

mv mysql-5.7.40-el7-x86_64 mysql

第四步 创建mysql用户和用户组

#查询一下mysql组是否存在,没有输出就是不存在grep -w \'mysql\' /etc/group#不存在则创建groupadd mysql#查询一下mysql组是否存在,没有输出就是不存在grep -w \'mysql\' /etc/passwd#不存在则创建useradd -r -g mysql mysql

第五步 创建数据盘目录

因服务器部署问题,将额外的大硬盘挂到了/data目录,因此将mysql的数据目录放到/data/mysql/data目录下

# 进入data目录cd /data# 创建mysql目录mkdir mysql# 创建mysql/data目录,数据存储mkdir mysql/data# 创建mysql/logs目录,日志、二进制文件和mkdir mysql/logs# 创建mysql/mariadb目录,‌mysqld_safe日志文件目录mkdir mysql/mariadb#创建mysql/mariadb/mariadb.log文件,mysql_safe日志文件touch /data/mysql/mariadb/mariadb.log

第六步 给安装目录和数据盘目录修改用户组和文件夹权限

# 安装目录修改用户组策略chown -R mysql:mysql /usr/local/mysql# 数据目录修改用户组策略chown -R mysql:mysql /data/mysql# 安装目录修改编辑权限chmod -R 775 /usr/local/mysql# 数据盘目录修改编辑权限chmod -R 775 /data/mysql

第七步 配置my.cnf

备份原文件并重新写入新文件

# 备份原文件mv /etc/my.cnf /etc/my.cnfbk# 直接vi编辑vi /etc/my.cnf
[mysqld]datadir=/data/mysql/datasocket=/data/mysql/mysql.socksymbolic-links=0#设置3306端口(也可以用其他的,生产环境中,尽量不要用3306,改用其他的)port=3306 #允许最大连接数max_connections=200 #允许连接失败的次数,可防止被攻击max_connect_errors=10 #使用的字符集utf8mb4,utf8mb4比utf-8好一些,能兼容一些特殊数据character-set-server=utf8mb4 #创建新表时使用的默认存储引擎default-storage-engine=INNODB #使用mysql_native_password插件认证,mysql_native_passworddefault_authentication_plugin=mysql_native_password #设置查询操作等不区分大小写lower_case_table_names=1 #开启慢sql日志slow_query_log = 1slow_query_log_file = /data/mysql/logs/slow.log#记录阈值(秒),建议设置2秒以上,根据需求综合考虑,避免过多的系统开销long_query_time = 3#开启bin-log,用于异常down机的数据恢复server-id = 1log-bin=/data/mysql/logs/mysql-bin# 日志存储天数 默认0 永久保存# 如果数据库会定期归档,建议设置一个存储时间不需要一直存储binlog日志,理论上只需要存储归档之后的日志expire_logs_days = 7# binlog最大值max_binlog_size = 1024M# 规定binlog的格式,binlog有三种格式statement、row、mixad,默认使用statement,建议使用row格式binlog_format = ROW# 在提交n次事务后,进行binlog的落盘,0为不进行强行的刷新操作,而是由文件系统控制刷新日志文件,如果是在线交易和账有关的数据建议设置成1,如果是其他数据可以保持为0即可sync_binlog = 0[mysql]default-character-set=utf8mb4[mysqld_safe]log-error=/data/mysql/mariadb/mariadb.logpid-file=/data/mysql/mariadb/mariadb.pid

第八步 初始化

#到mysql的安装目录(就是解压路径)下的bin执行#defaults-file:配置文件地址(/etc/my.cnf)#basedir:mysql的安装目录(就是解压路径)#datadir:创建的data数据目录#user:创建的mysql用户 cd /usr/local/mysql/bin ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql/data --user=mysql --initialize

注意:如下图所示,初始化之后,日志结尾处会出现初始化的密码,需要记录一下,首次登录需要该密码

另外初始化过程中可能会出现如下报错,安装一下对应的包即可

sudo yum install libaio

第九步 配置启动命令和开机自启动

9.1 配置启动命令

# 配置软连接ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql #查看是否成功,有输出就是成功了ll /etc/init.d/mysql #配置软连接ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql #查看是否成功ll /usr/local/bin/mysql

上述命令执行成功之后,可以下述命令进行mysql的开关机

#启动mysql服务service mysql start#停止mysql服务service mysql stop#重启mysql服务service mysql restart

9.2 设置开机自启

#退出mysql,在root帐户下改chkconfig --add mysql #查看是否成功chkconfig --list

9.3 启动mysql

service mysql start

第十步 修改默认密码

# -h 服务器IP# -P 区分大小写,端口号,第7步中配置的端口,生产环境不要使用3306# -u 用户名# -p 密码,无需指定,输入回车后会提示输入。第八步中初始化之后记住的密码mysql -h127.0.0.1 -P3306 -uroot -p

如图所示,则表示登录成功,下边就开始修改默认密码

# 输入初始化得到的密码# 修改密码为GoGo@2025!(自己的自行决定)set password for root@localhost = password(\'GoGo@2025!\'); # 设置用户的访问密码用不过期ALTER USER \'root\'@\'localhost\' PASSWORD EXPIRE NEVER; # 配置远程连接,生产服务器不建议该操作,建议直接本机链接即可use mysql;update user set host=\'%\' where user=\'root\'; # 刷新FLUSH PRIVILEGES;# 退出exit;

再次执行连接命令 mysql -h127.0.0.1 -P3306 -uroot -p,用新修改的密码测试连接成功!

第十一步 查看防火墙

systemctl status firewalld

未开启状态:

开启状态:

如果防火墙状态是开启状态,需要查看一下使用的端口是否已经开启了,以及常用命令

# 查看防火墙开通的端口firewall-cmd --zone=public --list-ports# 添加永久端口,22需要改成需要开放的端口值firewall-cmd --zone=public --add-port=22/tcp --permanent# 删除永久端口,22需要改成需要删除的端口值firewall-cmd --zone=public --remove-port=22/tcp --permanent# 重载防火墙规则,每次添加/删除端口之后都需要执行此命令firewall-cmd --reload# 防火墙重启systemctl restart firewalld# 防火墙启动systemctl start firewalld# 防火墙添加开机自启systemctl enable firewalld