CentOS 7 安装 MySQL 8

发布于:2023-02-03 ⋅ 阅读:(355) ⋅ 点赞:(0)

1.删除系统自带的mariadb

查看已安装版本

rpm -qa|grep mariadb

卸载

rpm -e --nodeps 文件名

# 查看是否卸载干净
rpm -qa|grep mariadb

2.安装wget下载mysql压缩包

# 下载wget和mysql压缩包,解压之
yum -y install wget
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
tar -Jxvf mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz

# 解压好的目录改名为mysql-8.0,移动至/usr/local目录
mv mysql-8.0.28-linux-glibc2.12-x86_64 mysql-8.0
mv mysql-8.0 /opt

3.安装目录下创建data文件夹用于存放数据

创建mysql用户组及用户

# 创建一个用户组:mysql
groupadd mysql

# 创建一个系统用户:mysql,指定用户组为mysql
useradd -r -g mysql -m mysql
  • 创建用户组: groupadd

  • 创建用户:useradd

    -r:创建系统用户

    -g:指定用户组

创建data目录并赋权

mkdir /opt/mysql-8.0/data
chown -R mysql:mysql /opt/mysql-8.0

4.初始化mysql

编辑my.cnf文件

vi /etc/my.cnf

# 添加或修改以下内容
[mysqld]
# 允许访问的IP网段
bind-address = 0.0.0.0

# 服务端口号 默认3306
port = 3306
user = mysql

# Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id = 1

# 设置临时目录
tmpdir = /tmp

# mysql安装根目录
basedir = /opt/mysql-8.0
datadir = /opt/mysql-8.0/data/
socket = /tmp/mysql.sock

# mysql日志文件存放位置
log-error = /var/log/mysql/mysql.err
pid-file = /var/log/mysql/mysql.pid
slow_query_log_file = /var/log/mysql/slow.log
# 默认mysqld-bin.00000* 作为文件名称
log-bin = /var/log/mysql/mysql-bin.log

# 慢查询时间设置
long_query_time = 5

# 开启慢查询日志功能,默认为OFF
slow-query-log = ON

# 基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR)
binlog_format = Row

# binlog每个日志文件大小
max-binlog-size = 1G

# binlog缓存大小
binlog_cache_size = 4m

# 最大binlog缓存大小
max_binlog_cache_size = 512m

# mysql binlog日志文件保存的过期时间,过期后自动删除
expire_logs_days = 30

# 数据库默认字符集设置
character-set-server=UTF8MB4

#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
 
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'

#最大连接数
max_connections = 400
 
#最大错误连接数
max_connect_errors = 1000

#指定mysql时间与系统同步
log_timestamps=SYSTEM


(以下内容可选)
# 跳过密码登录
# skip-grant-tables
 
#主要用于MyISAM存储引擎,如果多台服务器连接一个数据库则建议注释下面内容
skip-external-locking
 
#只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve = 1
 
#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation = READ-COMMITTED
 
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1

 
#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp = true
 
#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet = 128M
 
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800
 
#内部内存临时表的最大值 ,设置成128M。
#比如大数据量的group by ,order by时可能用到临时表,
#超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size = 134217728
max_heap_table_size = 134217728
 
#禁用mysql的缓存查询结果集功能
#后期根据业务情况测试决定是否开启
#大部分情况下关闭下面两项
query_cache_size = 0
query_cache_type = 0
 
#检查未使用到索引的sql
log_queries_not_using_indexes = 1
 
#针对log_queries_not_using_indexes开启后,记录慢sql的频次、每分钟记录的条数
log_throttle_queries_not_using_indexes = 5
 
#作为从库时生效,从库复制中如何有慢sql也将被记录
log_slow_slave_statements = 1
 
#慢查询执行的秒数,必须达到此值可被记录
long_query_time = 8
 
#检索的行数必须达到此值才可被记为慢查询
min_examined_row_limit = 100
 
#mysql binlog日志文件保存的过期时间,过期后自动删除
expire_logs_days = 5

编辑完my.cnf之后赋予644权限,不然无法初始化

chmod 664 /etc/my.cnf
mkdir /var/log/mysql
chown -R mysql.mysql /var/log/mysql

输入以下命令初始化数据库

/opt/mysql-8.0/bin/mysqld  --defaults-file=/etc/my.cnf --user=mysql --basedir=/opt/mysql-8.0 --datadir=/opt/mysql-8.0/data/ --initialize
  • defaults-file:指定配置文件(要放在 --initialize 前面,mysqld 后第一个参数,顺序不能乱!!!)
  • user: 指定用户
  • basedir:指定安装目录
  • datadir:指定初始化数据目录

cat /var/log/mysql/mysql.err 返回日志查看数据库初始密码

[root@node01 ~]# cat /var/log/mysql/mysql.err
2022-06-23T09:54:18.843569Z 0 [Warning] [MY-011068] [Server] The syntax 'expire-logs-days' is deprecated and will be removed in a future release. Please use binlog_expire_logs_seconds instead.
2022-06-23T09:54:18.843761Z 0 [System] [MY-013169] [Server] /opt/mysql-8.0/bin/mysqld (mysqld 8.0.28) initializing of server in progress as process 2245
2022-06-23T09:54:18.857854Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-06-23T09:54:20.449902Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-06-23T09:54:23.159214Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: XwPA8gY(4Bj,

添加mysql服务到系统,并设置开机自启

cp -a /opt/mysql-8.0/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql

启动mysql数据库服务,成功

[root@node01 mysql-8.0]# service mysql start
Starting MySQL.. SUCCESS! 
[root@node01 mysql-8.0]# service mysql status
 SUCCESS! MySQL running (2486)

添加软链接,完成之后用mysql命令即可操作

ln -s /opt/mysql-8.0/bin/mysql /usr/bin

# 若存在,覆盖之
ln -sf /opt/mysql-8.0/bin/mysql /usr/bin

5.登陆数据库

键入以下命令,使用刚才获取的初始密码登录

mysql -u root -p

修改root密码并打开远程登录

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; 
mysql> use mysql;

# root表示想要被连接的数据库的用户名,其中“%”表示允许所有机器能访问root用户
mysql> update user set host='%' where user='root';
mysql> flush privileges;
mysql> exit;

防火墙放行3306端口

firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload

参考文档

[1] (34条消息) Linux安装MySQL8.x详细步骤_等待花开I的博客-CSDN博客_linux安装mysql8

[2] Linux下安装MySQL8.0(超详细) - 墨尔本々 - 博客园 (cnblogs.com)

[3] (34条消息) CentOS7安装MySQL8(超级详细-无坑)_lfwh的博客-CSDN博客_centos7安装mysql8

[4] (34条消息) linux下安装mysql8及使用_下雨天的太阳的博客-CSDN博客_linux mysql8

[5] MySQL的日志文件及配置 - 知乎 (zhihu.com)

[6] (6条消息) MySql配置参数详解_liangkaikai666的博客-CSDN博客_mysql参数详解

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到