linux系统安装mysql8 (二进制方式编译安装)

1、说明和注意事项【必读】

  • 本文数据库安装方式为源码编译安装。
  • 安装的数据库包版本为:mysql-8.2.0-linux-glibc2.17-x86_64.tar.xz。该安装包针对于x86_64位架构。不同的架构需要下载不同架构的安装包。(uname -m 可以查看服务器架构)
  • 服务器为linux,x86_64架构。
  • 安装前对于服务器的性能调优在此不进行配置。
  • 安装前请搭建好yum源,方便yum安装相应依赖。
  • 本文中数据库(实例mysql和数据data)的安装都在数据盘下面。(生产环境中建议不要将数据库安装在系统盘下面)
  • mysql安装包的获取地址:https://downloads.mysql.com/archives/community/
  • 安装mysql的时候尽量使用管理用户root操作。

2、安装前准备

2.0 获取和本文中一致的mysql安装包。

访问此地址:https://downloads.mysql.com/archives/community/
在这里插入图片描述

2.1 创建mysql相关目录。下面的app为实例位置,data为数据位置,logs为日志位置,bak为备份位置。

# 创建MySQL相关目录
mkdir /data/mysql
mkdir /data/mysql/app
mkdir /data/mysql/data
mkdir /data/mysql/logs
mkdir /data/mysql/bak

# 创建MySQL的日志相关目录.
# err_log存错误日志,bin_log存二进制日志,slow_log存慢查询日志。
mkdir /data/mysql/logs/err_log
mkdir /data/mysql/logs/bin_log
mkdir /data/mysql/logs/slow_log

在这里插入图片描述

2.2 上传安装包以及依赖解决

# 1. 进入到mysql的app目录下面
cd /data/mysql/app

# 2. 此处敲回车选择安装包,或者通过ftp上传也一样。
rz

# 3. 解压安装包到当前目录下。
# 注意:.tar.xz格式的包,在解压的时候不要加-z参数。-z参数针对于.tar.gz格式的包
tar -xvf mysql-8.2.0-linux-glibc2.17-x86_64.tar.xz

# 4. 添加软连接或者重命名
ln -fs mysql-8.2.0-linux-glibc2.17-x86_64 mysql
mv mysql-8.2.0-linux-glibc2.17-x86_64 mysql		# 建议直接使用mv改名

# 5. 将原有的mysql安装包移动到bak目录下面
mv mysql-8.2.0-linux-glibc2.17-x86_64.tar.xz ./../bak/

##########解决mysql依赖########################
# 6. 查看是否安装mysql依赖libaio。下面命令如果有返回libaio开头的包说明已安装
rpm -qa | grep libaio

# 7. 如果没有安装,就开始安装。安装结束后指向6中的命令查看。
yum install -y libaio

在这里插入图片描述

2.3 删除服务器中自带的mariadb和my.cnf文件

# 1. 查看mariadb和mysql是否已安装
rpm -qa | grep mariadb
rpm -qa | grep mysql

# 2. 如果上面命令有返回结果,说明mariadb或mysql存在,需要卸载
# ***表示包名字, 如果第一个命令卸载不了,使用第二个,或者根据提示按顺序删除。
rpm -evh ***
rpm -evh ***  --nodeps

# 3.删除或改名服务器自带的my.cnf文件。执行其中1条就行。不执行可能导致mysql启动失败
rm -rf  /etc/my.cnf
mv  /etc/my.cnf  /etc/my.cnf.bak

2.4 配置环境变量

# 1. 先进入mysql的bin目录下,复制路径
cd /data/mysql/app/mysql/bin
pwd

# 2. 编辑环境变量,修改PATH部分。
vim ~/.bash_profile
PATH=$PATH:/mysql/app/mysql/bin:$HOME/bin

# 3. 重载环境变量文件
source ~/.bash_profile

# 4. 验证mysql是否已经添加到环境变量中
mysql --version
which mysql

在这里插入图片描述

3、开始安装

3.1 创建mysql用户和组

# 1. 先创建mysql组,然后在创建用户mysql并指定组也为mysql
groupadd mysql
useradd -r mysql -g mysql

# 2. 查看
id mysql

# 3. 修改权限,修改/data/mysql的用户和组为mysql
chown -R mysql:mysql /data/mysql 

在这里插入图片描述

3.2 创建my.cnf配置文件

cd /data/mysql/
rz my.cnf

# my.cnf内容如下[client]为开头,该文件生产中适用。可适当调整,也可不调整:
[client]
port=3308
socket = /data/mysql/mysql.sock

[mysql]
no-beep
#no-auto-rehash
auto-rehash
default-character-set=utf8mb4

[mysqld]
########basic settings start########
skip_name_resolve
#sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
sql_mode = STRICT_TRANS_TABLES,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
autocommit = 1
lower-case-table-names=1
character-set-server=utf8mb4
port=3308
pid-file=/data/mysql/mysql.pid
socket=/data/mysql/mysql.sock
basedir=/data/mysql/app/mysql
datadir=/data/mysql/data
default-storage-engine=INNODB
innodb_buffer_pool_size = 22G
max_connect_errors = 2000
max_connections = 4000
wait_timeout = 3600
interactive_timeout = 3600
net_read_timeout = 3600
net_write_timeout = 3600
table_open_cache = 1024
table_definition_cache = 1024
thread_cache_size = 512
open_files_limit = 10000
join_buffer_size = 128M
########basic settings end########

########log settings  start########
##慢查询日志
slow_query_log = ON
long_query_time = 10
slow_query_log_file = /data/mysql/logs/slow_log/slow.log

##错误日志
log-error=/data/mysql/logs/err_log/error.log

#二进制日志
server-id=75
# mysql8的过期天数参数和5.7不一样。2592000=30天,8默认单位是秒
binlog_expire_logs_seconds = 2592000
binlog_format=row
log_bin=/data/mysql/logs/bin_log/binlog
log_bin_index=/data/mysql/logs/bin_log/binlog.index

########log settings  end########


########innodb settings########
innodb_strict_mode=0
innodb_io_capacity = 500
innodb_io_capacity_max = 800
innodb_flush_sync = 0
innodb_flush_neighbors = 0
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_purge_threads = 4
innodb_page_cleaners = 4
innodb_open_files = 65535
innodb_max_dirty_pages_pct = 50
innodb_lru_scan_depth = 4000
innodb_checksum_algorithm = crc32
innodb_lock_wait_timeout = 10   
innodb_rollback_on_timeout = 1
innodb_print_all_deadlocks = 1
innodb_file_per_table = 1
innodb_online_alter_log_max_size = 4G
innodb_stats_on_metadata = 0

####other settings########
max_allowed_packet =300M
#过滤因mysql8版本采用的密码算法不同记录的告警日志
log_error_suppression_list=MY-013360
log_timestamps = system

#使用旧的密码算法
default_authentication_plugin=mysql_native_password
#default_authentication_plugin=caching_sha2_password

3.3 开始初始化安装

cd /data/mysql

# 1. 再次修改权限。在3.2中我们用管理用户root创建了my.cnf文件。该文件的用户和组还是root
chown -R mysql:mysql /data/mysql

# 2. 初始化mysql,此处执行需要等待几秒。
mysqld --defaults-file=/data/mysql/my.cnf --initialize --user=mysql --basedir=/data/mysql/app/mysql --datadir=/data/mysql/data

# 3. 查看错误日志文件,获取临时mysql密码,临时密码在后面登录会用到。
cat /data/mysql/logs/err_log/error.log

在这里插入图片描述

3.4 配置service方式启动

3.4.1 先修改mysql.server文件

# 1. 进入到support-files目录下面
cd /data/mysql/app/mysql/support-files

# 2. 备份并改名
cp mysql.server mysqld

# 3. 修改mysqld文件,
# 注意:下面内容中前面的数字不是内容中的部分,只是为了说明需要修改的内容在哪一行。

 46 basedir=/data/mysql/app/mysql
 47 datadir=/data/mysql
 
 63 mysqld_pid_file_path=/data/mysql/mysql.pid
 
 66   basedir=/data/mysql/app/mysql
 67   bindir=/data/mysql/app/mysql/bin

 70     datadir=/data/mysql/data

 72   sbindir=/data/mysql/bin
 73   libexecdir=/data/mysql/app/mysql/bin

105 PATH="/sbin:/usr/sbin:/bin:/usr/bin:/data/mysql/app/mysql/bin:$basedir/bin"

207   conf=/data/mysql/my.cnf

266       $bindir/mysqld_safe --defaults-file=/data/mysql/my.cnf --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.4.2 添加service方式启动,设置开机启动

# 1. 将mysqld文件复制到/etc/init.d下面
cd /data/mysql/app/mysql/support-files
cp mysqld /etc/init.d
ls

# 添加到启动中
chkconfig --add mysqld
chkconfig --list

3.5、启动mysql服务并配置新密码

cd /data/mysql

# 1. 启动mysql服务
service mysqld start

# 2. 查看进程和端口,确保mysql服务已经启动.3308为my.cnf中定义的mysql端口
ps -ef | grep mysqld
netstat -tunlp | grep 3308

# 3. 添加软连接。添加前查看服务启动后/data/mysql下面是否生成mysql.sock文件
# 服务启动后会在我们定义的/data/mysql/目录下面生成.pid文件、.sock文件和.sock.lock文件,见下图。
ll /data/mysql
ln -fs /data/mysql/mysql.sock /tmp

# 3. 登录mysql。执行下面命令后直接回车,然后输入前面记录的临时密码后回车。
# 输入临时密码终终端是没有任何显示的,属于正常情况。不必在意。
mysql -u root -p

# ----------sql部分-----------
# 下面是登录mysql后的sql部分。执行mysql> 后面的语句即可
# 4. 修改当前root用户的密码,密码为sxl_yyds, 密码可修改。
mysql> alter user 'root'@'localhost' identified by 'sxl_yyds';
Query OK, 0 rows affected (0.01 sec)

# 5. 刷新
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

# 6. 退出
mysql> quit


# 7. 重新登录MySQL,这次使用新密码登录
mysql -u root -p

# -------------------sql部分----------------
# 下面是登录mysql后的sql部分。执行mysql> 后面的语句即可
# 进入mysql库
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

# 设置root用户的密码永不过期(根据自己情况执行)
Database changed
mysql> update user set password_expired = 'N' where user = 'root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

# 创建新用户授予权限。后续工具连接测试使用新用户。root用户我们只允许本地ip登录。
# 创建用户sxl,所有ip可登录,密码为sxl@135。前面的%代表所有ip
mysql> create user 'sxl'@'%' identified by 'sxl@135';
Query OK, 0 rows affected (0.00 sec)

# 授予所有权限
mysql> grant all privileges on *.* to 'sxl'@'%' with grant option;
Query OK, 0 rows affected (0.00 sec)

# 刷新
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

# 查看用户表
mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | sxl              |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
5 rows in set (0.00 sec)

mysql> quit

# 新用户登录验证。
mysql -u sxl -p

mysql服务启动后,会在我们定义的/data/mysql目录下面生成pid文件和sock文件。如下图所示。

在这里插入图片描述

4、防火墙配置

# 1. 查看你防火墙状态
systemctl status firewalld

# 2. 如果防火墙开启,开放mysql的3308端口(如果防火墙未开启,忽略此步骤)
# 添加tcp的3308端口,下面的permanent为重启生效,不加为当前生效。两条命令都执行
firewall-cmd  --add-port=3308/tcp
firewall-cmd  --add-port=3308/tcp --permanent

# 刷新
firewall-cmd  --reload

# 查看防火墙列表,此时端口已经在列表中存在。
firewall-cmd  --list-all

5、工具连接验证(结尾)

在这里插入图片描述
敬语:此文章如有问题望多多指正,在此感激不尽。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值