MySQL数据库系列(八):CentOS7环境下离线安装MySQL8.0.28数据库


1. 环境说明

安装环境:CentOS7 64 位

MySQL 数据库版本:MySQL8.0.28

安装方式:离线安装(服务器环境没有外部网络)

这里需要说明一下安装方式,很多人为了方便可能直接使用 yum 源,省去了很多步骤,但是对于公司内部的服务器是不能连接外网的,因此这里就只能自己上传安装包安装啦。(如果你们公司有专业的 DBA,无需自己弄,恭喜你不需要看这个博客啦!)

2. 数据库下载

MySQL 8.0.28 Linux 安装包下载:https://dev.mysql.com/downloads/mysql/

这个地址进入后就是最新的版本。

另外需要注意的是下载的时候需要注册 oracle 账号,如果有账号直接登录,没有就自己注册。版本选择如下:

  • 使用 Red Hat Enterprise Linux
    Select Version:8.0.28
    Select Operating System:Red Hat Enterprise Linux / Oracle Linux
    Select OS Version:Red Hat Enterprise Linux 7 / Oracle Linux 7 (ARM, 64-bit)
    列表中下载:
    RPM Bundle:(mysql-5.7.35-el7-x86_64.tar.gz)
  • 使用 Linux - Generic
    Select Version:8.0.28
    Select Operating System:Linux - Generic
    Select OS Version:Linux - Generic (glibc 2.12) (x86, 64-bit)
    列表中下载:
    Compressed TAR Archive:(mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz)【本文中使用的是这个版本 8.0.28】

3. 安装

3.1 查询并卸载系统自带的数据库:Mariadb

# 找到数据库mariadb,如果有会给出一个结果,结果是mariadb名称
rpm -qa | grep mariadb
# 如果存在就卸载
rpm -e --nodeps [mariadb名称]

3.2 创建用户和用户组

为了方便数据库管理,对于安装的 MySQL 数据库,生产上我们都会建立一个 mysql 用户和 mysql 用户组。

# 先检查mysql用户和用户组有没有被使用
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
# 添加mysql用户组
groupadd mysql
# 添加mysql用户并加入用户组
useradd -g mysql mysql
# 修改mysql用户的登陆密码(这里根据需要设置,可以略过)
passwd mysql

3.3 上传安装文件

上传部分不难,可以采用三种方式,一种是通过 sftp,一种是通过rz命令上传,最后是使用scp命令来安装。这里采用scp,第一种需要在本地机器上安装 sftp,本身是收费的需要破解;第二种是rz命令,这个要看远程服务器上安装此命名的支持,通过 yum 源安装很简单,执行yum -y install lrzsz即可,如果服务所在环境无法连接外网,那就要自己去找相关的安装包,麻烦。最终我是选择scp命令,不要安装插件。

scp D://softpackage/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz root@192.168.75.128:/usr/local/

3.4 获取安装包和修改名称

# 解压安装包,解压后即可直接使用
tar -xvf mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
# 此时会生成一个目录mysql-8.0.28-linux-glibc2.12-x86_64,将其改名为mysql
mv mysql-8.0.28-linux-glibc2.12-x86_64 mysql

3.5 目录授权操作

# 按照下面的操作执行
cd /usr/local/
chown -R mysql mysql/
chgrp -R mysql mysql/
cd mysql/
mkdir data
chown -R mysql:mysql data

3.6 配置文件的创建和配置信息

默认my.cnf这个配置文件是不存在的,需要创建,并且填入配置信息。另外需要修改/etc/profile文件内容。

# 创建my.cnf文件并编辑(使用vi或者vim)
vim /etc/my.cnf
  • 具体my.cnf配置信息:
[mysql]
default-character-set=utf8mb4
[client]
#port=3306
socket=/var/lib/mysql/mysql.sock

[mysqld]
user=mysql
general_log = 1
general_log_file= /var/log/mysql/mysql.log
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql/mysql-8.0
datadir=/usr/local/mysql/data
log-bin=/usr/local/mysql/data/mysql-bin
innodb_data_home_dir=/usr/local/mysql/data
innodb_log_group_home_dir=/usr/local/mysql/data/
character-set-server=utf8mb4
lower_case_table_names=1
autocommit=1
default_authentication_plugin=mysql_native_password
symbolic-links=0
# Disabling symbolic-links is recommended to prevent assorted security risks
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/usr/local/mysql/data/mysql.log
pid-file=/usr/local/mysql/data/mysql.pid

#
# include all files from the config directory
  • 设置my.cnf文件的权限:
chmod 644 /etc/my.cnf
  • 修改/etc/profile文件:
# 修改profile文件
vim /etc/profile
# 在文件尾部追加下面的内容
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
# 保存/etc/profile,并应用此文件
source /etc/profile

3.7 安装数据库

进入/usr/local/mysql/bin/目录下,执行安装操作。

# 此命令执行成功后,打印的最后一行日志末尾会给出MySQL数据库访问的默认密码,需要注意记录一下
./mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --initialize

注意事项:在执行此命令的时候一定要完成上面的所有步骤,在 MySQL8 的安装时 lower_case_table_names 参数必须在安装前配置完成,否则在启动 MySQL 的时候出现 Different lower_case_table_names settings for server (‘1‘) and data dictionary (‘0‘) 错误。

安装结束后,还会给出数据库的默认密码,在输出的日志里面,记得复制出来保存下来。(如果这里忘了保存,后面给出解决方案)

3.8 复制 mysql.server 文件

# 复制mysql.server文件到/etc/init.d/目录
cp -a ./support-files/mysql.server /etc/init.d/mysql
cp -a ./support-files/mysql.server /etc/init.d/mysqld
# 目录授权
chmod +x /etc/init.d/mysql
chmod +x /etc/init.d/mysqld

3.9 检查 socket 文件目录是否创建

进入到/var/lib/目录下,检查是否有mysql目录,如果没有则创建,并进行权限的修改,如果有需要检查权限,如不符合要求则进行修改,具体修改命令如下:

# 创建/var/lib/下的mysql目录
mkdir /var/lib/mysql/
# 赋予权限
chown -R mysql:mysql /var/lib/mysql

3.10 mysql 服务操作命令

# 启动
service mysql start
# 重启
service mysql restart
# 关闭
service mysql stop

4. 配置远程访问权限

  • 修改密码
# 登录到数据库中(使用3.7步骤安装完成后生成的默认密码),执行语句如下
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
# 操作结束后,通过exit命令退出,然后重新登录,验证修改的密码是否生效
  • 修改远程访问权限
-- 登录数据
-- 切换到mysql数据库
use mysql;
-- 更新权限
update user set host='%' where user = 'root';
-- 查询一下是否修改成功
select host,user from user;
-- 结果如下表示成功,root用户的host已经修改为'%'
--+-----------+---------------+
--| host      | user          |
--+-----------+---------------+
--| %         | root          |
--| localhost | mysql.session |
--| localhost | mysql.sys     |
--+-----------+---------------+
-- 上面的修改结束后,退出数据库,重启数据库服务生效
service mysql restart

5. 无默认密码怎么办

如果在安装后,给出的默认密码没有记录,且不知道在哪里找这个默认密码,可以采用下面的方式。

  1. 首先编辑my.cnf文件,添加skip-grant-tables,重新启动数据库,再登录数据库,此时就不需要密码直接mysql -uroot -p回车即可;
  2. 进入数据库后,修改user表;(注意这步必须要做,如果跳过直接执行第三步,会报错的)
# 应用到mysql数据库
use mysql;
# 修改用户表
update user set authentication_string='' where user='root';
flush privileges;
  1. 使用alter命令修改密码。
ALTER user 'root'@'localhost' IDENTIFIED BY 'whq2242';
flush privileges;
  1. 修改my.cnf配置文件,将skip-grant-tables删除,再重启数据库,就 OK 啦!

文章作者: 程序猿洞晓
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 程序猿洞晓 !
评论
 上一篇
Linux常用命令集 Linux常用命令集
Linux有很多常用的命令,记忆起来会比较多,偶尔要用的时候突然大脑短路想不起来啦,那就到这里来查。这里没有再去找度娘,较少筛选庞大网络内容的时间消耗。
2022-06-25
下一篇 
ArrayList源码(二):扩容和移位、删除元素详解 ArrayList源码(二):扩容和移位、删除元素详解
ArrayList是最常用的集合容器之一,也是面试的时候必问的一个知识点,下面来一起看一下源码,了解一下ArrayList扩容、移位、删除元素的操作细节。
2022-04-07
  目录