linux环境下MySQL安装

1. 版本选择

选择大方向:GA版,退后6-12月,前后没有太多小版本,作为选择。

  • 5.6 : 5.6.40 + 双数版,经典版,官方即将停止更新;

  • 5.7 : 5.7.22/30 + 双数版,主流,逐步过渡到8.0;

  • 8.0 : 8.0.30 + 双数版,开始评测,小规模边缘业务数据库使用;

2. 数据库服务程序下载

利用官方网址获取数据库软件程序:https://www.mysql.com/

下载连接:

官方:https://downloads.mysql.com/archives/community/ https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.30-linux-glibc2.12-x86_64.tar

国内阿里镜像:https://mirrors.aliyun.com/mysql/ https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz

选择官网网站的 DOWNLOADS 进行数据库软件程序下载选择;

在这里插入图片描述

在数据库官方下载页面中,选择 MySQL Community (GPL) Downloads 链接,进行数据库程序社区版下载;

在这里插入图片描述

进入数据库程序的社区版下载页面后,会看到社区版数据库服务的多种安装场景,选择MySQL Community Server方式安装;

在这里插入图片描述

官方历史版下载页面:

在这里插入图片描述

进入到社区版服务器安装场景界面,需要选择数据库服务的安装部署环境和需要下载的程序具体版本信息;

在这里插入图片描述

查看Linux系统的glibc运行使用的C语言库版本信息:

[root@localhost ~]# getconf GNU_LIBC_VERSION
glibc 2.17
[root@localhost ~]# ldd --version
ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

3. 数据库服务安装

在Linux系统中常见的部署安装方式:

序号安装方式特征说明
01采用二进制方式安装直接解压缩二进制程序包,进行简单的配置和初始化操作即可。比较简单,但是没办法定制,软件大,往往被中小企业选择。
02采用rpm包方式安装需要从官方网站下载rpm程序包,需要考虑系统环境的兼容性,需要解决软件程序包依赖。比较复杂、需要下载、手工解决依赖、没法定制。
03采用yum包方式安装需要根据官方网站说明,配置yum下载的仓库源信息,在联网情况下进行安装部署。方法简单、自动解决依赖(默认源没有数据库), 没法定制。
04采用源码包方式安装需要从官方网站下载源码程序包,并且需要解决程序包依赖问题,以及需要采用编译安装,特别复杂、编译软件gcc都需要升级,可定制任何东西.。

说明:本次选择二进制包安装方式,使安装过程更加简单和规范。

3.1 软件环境准备

# 1)查看系统环境
[root@localhost ~]# cat /etc/redhat-release         #<==操作系统版本。
CentOS Linux release 7.9.2009 (Core)

# 2)关闭selinux:
setenforce 0 #临时关闭selinux
getenforce #查看关闭selinux
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

# 3)卸载mariadb依赖包
yum remove mariadb-libs -y                        #<==卸载系统已经安装的mariadb依赖包。

# 4)安装相关依赖包
yum install ncurses ncurses-devel libaio-devel openssl openssl-devel -y

# 5)临时及永久关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

3.2 建立用户账号

[root@localhost ~]# useradd mysql -s /sbin/nologin -M    #<==创建mysql用户。
[root@localhost ~]# id mysql
  • 下载、解压mysql软件包,并做好软链接mysql到/usr/local
[root@localhost ~]# cd /opt
[root@localhost opt]# wget https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz

# 这里建议直接选择已经下载好的安装包进行上传安装,稳定
[root@localhost opt]# tar xf mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz
[root@localhost opt]# mv /opt/mysql-8.0.36-linux-glibc2.12-x86_64 /usr/local/mysql
[root@localhost opt]# ls -l /usr/local/mysql

3.3 创建相关目录文件授权

创建MySQL数据目录、配置文件(/etc/my.cnf)并授权。

# 1)增加简易配置文件,后面在优化
[root@localhost opt]# cat>/etc/my.cnf<<'EOF'
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
port=3306
socket=/tmp/mysql.sock
[client]
socket=/tmp/mysql.sock
EOF

# 2)验证配置文件内容
[root@localhost opt]# cat /etc/my.cnf

# 3)配置文件授权
[root@localhost opt]# chown mysql.mysql /etc/my.cnf

# 4)创建MySQL数据目录并授权
[root@localhost opt]# mkdir -p /data/3306/data
[root@localhost opt]# chown -R mysql.mysql /data
[root@localhost opt]# ls -ld /data

3.4 配置PATH环境变量

# 1) 配置PATH环境变量
[root@localhost opt]# echo 'export PATH=/usr/local/mysql/bin:$PATH' >>/etc/profile

# 2)加载生效并检查
[root@localhost opt]# . /etc/profile
[root@localhost opt]# echo $PATH
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

3.5 初始化数据库

数据库初始化命令应用解读:

核心程序命令初始化核心参数数据管理用户数据存储路径数据存放目录
mysqld–initialize-insecure–user=mysql–basedir=/usr/local/mysql–datadir=/data/3306/data
# 1)初始化MySQL数据库
[root@localhost opt]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data

初始化数据库的实质就是创建基础的数据库系统的库文件等信息,例如:生成mysql库表等。

[root@localhost opt]# ls /data/3306/data/ -l
total 79292
-rw-r----- 1 mysql mysql       56 Jun 27 17:42 auto.cnf
-rw------- 1 mysql mysql     1705 Jun 27 17:42 ca-key.pem
-rw-r--r-- 1 mysql mysql     1112 Jun 27 17:42 ca.pem
-rw-r--r-- 1 mysql mysql     1112 Jun 27 17:42 client-cert.pem
-rw------- 1 mysql mysql     1705 Jun 27 17:42 client-key.pem
-rw-r----- 1 mysql mysql   196608 Jun 27 17:42 #ib_16384_0.dblwr
-rw-r----- 1 mysql mysql  8585216 Jun 27 17:42 #ib_16384_1.dblwr
-rw-r----- 1 mysql mysql     6209 Jun 27 17:42 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 Jun 27 17:42 ibdata1
drwxr-x--- 2 mysql mysql     4096 Jun 27 17:42 #innodb_redo
drwxr-x--- 2 mysql mysql        6 Jun 27 17:42 #innodb_temp
drwxr-x--- 2 mysql mysql      143 Jun 27 17:42 mysql
-rw-r----- 1 mysql mysql 26214400 Jun 27 17:42 mysql.ibd
drwxr-x--- 2 mysql mysql     8192 Jun 27 17:42 performance_schema
-rw------- 1 mysql mysql     1705 Jun 27 17:42 private_key.pem
-rw-r--r-- 1 mysql mysql      452 Jun 27 17:42 public_key.pem
-rw-r--r-- 1 mysql mysql     1112 Jun 27 17:42 server-cert.pem
-rw------- 1 mysql mysql     1709 Jun 27 17:42 server-key.pem
drwxr-x--- 2 mysql mysql       28 Jun 27 17:42 sys
-rw-r----- 1 mysql mysql 16777216 Jun 27 17:42 undo_001
-rw-r----- 1 mysql mysql 16777216 Jun 27 17:42 undo_002
  • 初始化的相关知识

知识1 : 之前不同版本的初始化命令异同

#5.7之前初始化
/usr/local/mysql/scripts/mysql_install_db
#5.7和8.0初始化
/usr/local/mysql/bin/mysqld

知识2: --initialize--initialize-insecure区别

  • --initialize: 会生成一个12位,4种密码复杂度临时管理员密码,第一次登陆需要修改。
  • --initialize-insecure:管理员密码为空。

注意:mysql_install_db程序已从MySQL发行版中删除。数据目录初始化应通过使用--initialize--initialize-insecure选项调用mysqld来执行。 此外,删除了mysql_install_db使用的mysqld选项,并删除了控制mysql_install_db安装位置的选项。

3.6 配置并启动

# 服务启动脚本:/usr/local/mysql/support-files/mysql.server

# 1.设置MySQL启动脚本
[root@localhost opt]# cd /usr/local/mysql/support-files/
[root@localhost support-files]# cp mysql.server /etc/init.d/mysqld  #<==拷贝mysql启动脚本到启动路径。
[root@localhost support-files]# systemctl enable mysqld             #<==等价chkconfig mysqld on(c7把服务设置开机自启动命令)

# 2.启动MySQL数据库
[root@localhost support-files]# systemctl start mysqld

# 3.检查MySQL数据库是否启动。
[root@localhost support-files]# netstat -lntup|grep 330

# 4.查看MySQL数据库启动结果日志。
[root@localhost support-files]# cat /data/3306/data/db.err       # 文件名格式:主机名.err

对于一些较新的发行版,可能已经移除了init的管理方法,这个提供一个直接使用systemd管理的方法。亲测可用。Systemd服务管理方式管理MySQL

3.7 验证登录数据库

[root@localhost support-files]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.36 MySQL Community Server - GPL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

4. 安装常见故障分析及解决

问题1:初始化报错libaio

[root@localhost opt]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data
mysqld: error while loading shared libraries: libaio.so.1: cannot open
shared object file: No such file or directory

# 原因:缺少libaio-devel依赖包
# 解决:yum install libaio-devel -y
# 如果不知道包名,可以执行 yum provides libaio -y 查找

问题2: 初始化报错数据文件目录不为空

2021-11-09T04:08:57.631792Z 0 [ERROR] [MY-010457] [Server] --initialize
specified but the data directory has files in it. Aborting.
2021-10-09T04:08:57.631803Z 0 [ERROR] [MY-013236] [Server] The designated
data directory /data/3306/data/ is unusable. You can remove all files that
the server added to it.

# 解决:rm -rf /data/3306/data/*  手动清空

问题3:启动后初始无法登录

[root@localhost ~]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using
password: NO)

# 原因:此问题一般都是数据库初始化问题或者数据库文件损坏以及目录权限问题。
# 解决办法:删除初始化目录,然后重新初始化数据库,剩余过程不变。
rm -rf /data/3306/data/*
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data

5. 配置文件相关

5.1 配置文件基本结构

  • 书写格式规范说明:
# 配置文件模板信息参考
cat /etc/my.cnf    # 获取全部配置参数 mysql --verbose --help

[mysqld]          # 服务端标签,需要重启,影响服务运行。获取全部配置参数 mysqld --verbose --help
port=3306
server_id=6
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
socket=/tmp/mysql.sock

[mysql]           # mysql客户端标签,配置后不需要重启
socket=/tmp/mysql.sock

[mysqld_safe]    #<==启动服务标签,配置后不需要重启
……
[mysqldump]      #<==备份标签,配置后不需要重启
……

-- 服务端常见标签类型:[mysqld]  [mysql_safe]  [server]
-- 客户端常用标签类型:[mysql] [mysqldump] [client]
  • 配置文件信息结构说明:
序号配置部分配置信息说明
01带有[]部分表示配置标签部分,用于区分不同程序运行的参数,包含服务器端和客户端标签信息
[服务端标签]负责数据库服务端运行参数信息设定
[客户端标签]影响客户端与服务连接参数信息设定(只影响本地客户端连接,不影响远程客户端连接)
02不带[]部分表示配置参数部分
  • 配置文件信息内容说明:
序号配置信息解释说明
[mysqld]服务端配置标签
01user=mysql表示数据库服务管理用户信息
02basedir=/usr/local/mysql表示数据库服务程序安装路径
03datadir=/data/3306/data表示数据库服务数据存储路径
04server_id=6表述数据库服务标识节点编号(主从复制的唯一编号)
05port=3306表示数据库服务启动端口设定
06socket=/tmp/mysql.sock表示数据库服务本地连接文件(套接字文件)
07default_authentication_plugin=mysql_native_password表示数据库服务加密插件设定,用于向下兼容
[mysql]客户端配置标签(本地连接数据库生效)
01socket=/tmp/mysql.sock表示数据库服务本地连接文件(套接字文件)

5.2 修改数据库配置文件

默认首个配置位置:/etc/my.cnf

  • 配置文件加载应用读取顺序:
# 通过数据库服务启动命令获取加载文件顺序
[root@db ~]# mysqld --help --verbose|grep my.cnf
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 
                      my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default
                      
# 得到数据库服务加载配置文件顺序:
/etc/my.cnf ==> /etc/mysql/my.cnf ==> /usr/local/mysql/etc/my.cnf ==> ~/.my.cnf 
  
# 数据库服务加载特定路径中的配置文件信息
# 配置文件特定路径举例:
/opt/my.cnf
/data/3306/my.cnf
/data/3307/my.cnf
/data/3308/my.cnf

# 利用启动脚本加载参数信息,手工指定加载配置文件的路径位置信息
mysqld --defaults-file=/opt/my.cnf &
mysqld_safe --defaults-file=/opt/my.cnf &
  • 参数配置方式:
  • 源码包编译安装时进行配置;
  • 系统命令行指定部分mysql参数;
  • mysql命令行临时设置MySQL参数,查看所有参数 show variables;
  • 参数查看:(两个级别,全局:global,局部:session
  • global级:全局
mysql> select @@global.wait_timeout;
+-----------------------+
| @@global.wait_timeout |
+-----------------------+
|                 28800 |
+-----------------------+
1 row in set (0.00 sec)

mysql> show global variables like '%wait_timeout%';
+--------------------------+----------+
| Variable_name            | Value    |
+--------------------------+----------+
| innodb_lock_wait_timeout | 50       |
| lock_wait_timeout        | 31536000 |
| mysqlx_wait_timeout      | 28800    |
| wait_timeout             | 28800    |
+--------------------------+----------+
4 rows in set (0.04 sec)

mysql> select * from performance_schema.global_variables where variable_name ='wait_timeout';
+---------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+---------------+----------------+
| wait_timeout  | 28800          |
+---------------+----------------+
1 row in set (0.01 sec)
  • session级:局部
mysql> select @@wait_timeout;
+----------------+
| @@wait_timeout |
+----------------+
|          28800 |
+----------------+
1 row in set (0.00 sec)

mysql> select @@session.wait_timeout;
+------------------------+
| @@session.wait_timeout |
+------------------------+
|                  28800 |
+------------------------+
1 row in set (0.00 sec)

mysql> show variables like 'wait_timeout';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout  | 28800 |
+---------------+-------+
1 row in set (0.00 sec)

mysql> show session variables like 'wait_timeout';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout  | 28800 |
+---------------+-------+
1 row in set (0.00 sec)

mysql> select * from performance_schema.session_variables where variable_name ='wait_timeout';
+---------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+---------------+----------------+
| wait_timeout  | 28800          |
+---------------+----------------+
1 row in set (0.00 sec)
  • 参数修改
  • session级参数的修改(退出会话即失效)
mysql> set wait_timeout=10;
mysql> set session wait_timeout=11;
  • global级参数的修改(重启数据库失效)
mysql> set global wait_timeout=20;        # 不能重启MySQL,还要需要参数,用这个命令。
  • 配置文件修改:重启生效,永久生效
# vi /etc/my.cnf
[mysqld]
wait_timeout = 10

工作中坚决不允许重启MySQL,改参数用下面方法:1. 先set global全局修改。 2.同时改配置文件/etc/my.cnf。

  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值