MySQL部署系列-centos离线安装MySQL

MySQL部署系列-centos离线安装MySQL

文章目录

  • MySQL部署系列-centos离线安装MySQL
    • [1. 查看是否已经安装 Mysql](#1. 查看是否已经安装 Mysql)
    • [3. 下载官方 Mysql 包](#3. 下载官方 Mysql 包)
    • [3. 下载之后上传到服务器](#3. 下载之后上传到服务器)
    • [4. 创建用户组](#4. 创建用户组)
    • [5. 创建数据目录并赋予权限](#5. 创建数据目录并赋予权限)
    • [6. 修改配置文件 `vim /etc/my.cnf`](#6. 修改配置文件 vim /etc/my.cnf)
    • [7. 初始化数据库(数据库安装)](#7. 初始化数据库(数据库安装))
    • [8. 加入到系统服务并启动mysql](#8. 加入到系统服务并启动mysql)
    • [9. 允许外部访问](#9. 允许外部访问)
    • [10. 参考和感谢](#10. 参考和感谢)

1. 查看是否已经安装 Mysql

复制代码
rpm -qa | grep mysql

如果没有什么返回信息,说明没有安装 Mysql,如果已安装就需要卸载

3. 下载官方 Mysql 包

MySQL官网社区版本下载传送门

特别说明:

  • MySQL有两个大版本,分别是5.x.x系列和8.x.x系列
  • MySQL升级,建议选择相同系列版本中最新的版本

3. 下载之后上传到服务器

个人喜欢放置在/opt/software目录下

解压至 /usr/local/mysql 目录下

复制代码
# 解压文件至/usr/local/目录
tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
# 移动至/usr/local/mysql下
mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql

4. 创建用户组

在安装MySQL时创建mysql用户和mysql用户组是为了提高系统安全性以及限制MySQL服务的运行权限。通常情况下,MySQL服务运行时以mysql用户的身份来进行,这样可以降低系统受到MySQL服务影响的风险。

创建mysql用户和mysql用户组的目的包括:

  1. 隔离权限: 通过将MySQL服务限制在只能以mysql用户的身份来运行,可以降低系统其他部分受到影响的可能性。即使MySQL服务出现安全问题或漏洞,也只会影响到mysql用户及其所属的文件和目录。

  2. 安全审计: 在操作系统中创建mysql用户和mysql用户组,可以更好地跟踪MySQL服务的活动、日志和文件权限。这有助于加强对MySQL服务的监控和安全审计。

  3. 最小权限原则: 创建专门的mysql用户和mysql用户组,并为其分配最小化的权限,有助于按照最小权限原则来管理MySQL服务,降低服务被滥用或遭受攻击的风险。

    创建用户组

    groupadd mysql

    -r 选项:表示创建一个系统用户,系统用户通常用于运行系统服务和应用程序,其UID会被限制在不同的范围内,提供更高的安全性。

    -g mysql 选项:表示将该用户添加到mysql用户组中,这样用户将拥有mysql用户组的权限。

    mysql:是要创建的用户的用户名。

    useradd -r -g mysql mysql

分配用户组

复制代码
# 将文件的所有属性改为 mysql 用户
chown -R mysql /usr/local/mysql/ 
# 将组属性改为 mysql 组
chgrp -R mysql /usr/local/mysql/ 

5. 创建数据目录并赋予权限

复制代码
#数据目录
mkdir -p /data/mysql 
#赋予权限
chown mysql:mysql -R /data/mysql

6. 修改配置文件 vim /etc/my.cnf

复制代码
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true

7. 初始化数据库(数据库安装)

参数解释:

  • --basedir 为mysql解压目录

  • --datadir 为mysql数据存放目录。(注意安装路径是否一致)

  • --defaults-file 配置文件

    cd /usr/local/mysql/bin/
    ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize

查看初始密码

复制代码
cat /data/mysql/mysql.err

记录初始密码,后面要使用

8. 加入到系统服务并启动mysql

复制代码
#加入系统服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
#启动mysql服务
service mysql start

登录mysql,一定要开启服务后才能登陆

复制代码
/usr/local/mysql/bin/mysql -u root -p

输入上述记录的临时密码,登录成功后会提示你重置密码

复制代码
# 修改密码,SQL语句后面的分号不能丢(xxxx就是root账号的密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxx';
#刷新 
FLUSH PRIVILEGES;     

重启mysql

复制代码
# 退出 
quit
# 重启服务
service mysql restart
# 再次登陆 
/usr/local/mysql/bin/mysql -u root -p
# 回车输入刚刚修改的密码

到此mysql已经安装完成了,下面是常见的mysql命令

复制代码
# 停止mysql服务
service mysqld stop

# 重启mysql服务
service mysqld restart

# 查看mysql服务是否启动
service mysqld status

9. 允许外部访问

使用客户端工具连接mysql时提示,这是因为root账号默认只有localhost才能连接

复制代码
"Host 'xxx' is not allowed to connect to this MySQL server"

解决方法:登录mysql服务,修改root账号访问规则

复制代码
#选择访问mysql库
use mysql  
#使root能再任何host访问
update user set host = '%' where user = 'root';      
#刷新 
FLUSH PRIVILEGES;       

10. 参考和感谢

CentOS离线安装MySQL

相关推荐
KellenKellenHao9 小时前
MySQL数据库主从复制
数据库·mysql
一只fish10 小时前
MySQL 8.0 OCP 1Z0-908 题目解析(16)
数据库·mysql
叁沐12 小时前
MySQL 07 行锁功过:怎么减少行锁对性能的影响?
mysql
Java烘焙师12 小时前
架构师必备:业务扩展模式选型
mysql·elasticsearch·架构·hbase·多维度查询
飞翔的佩奇12 小时前
Java项目:基于SSM框架实现的忘忧小区物业管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告】
java·数据库·mysql·vue·毕业设计·ssm框架·小区物业管理系统
@Ryan Ding12 小时前
MySQL主从复制与读写分离概述
android·mysql·adb
feifeigo12319 小时前
升级到MySQL 8.4,MySQL启动报错:io_setup() failed with EAGAIN
数据库·mysql·adb
A__tao1 天前
一键将 SQL 转为 Java 实体类,全面支持 MySQL / PostgreSQL / Oracle!
java·sql·mysql
一只fish1 天前
MySQL 8.0 OCP 1Z0-908 题目解析(17)
数据库·mysql
叁沐1 天前
MySQL 06 全局锁和表锁:给表加个字段怎么有这么多阻碍?
mysql