MySQL8.0安装

  • 格式:pdf
  • 大小:888.23 KB
  • 文档页数:9

1MySQL安装

在MySQL官⽹下载对应的版本,常⽤的安装包是⼆进制包(Linux-Generic)和源码包(SourceCode)

glibc 指的是编译MySQL的glibc版本,可以通过 ldd 命令查看 下载MySQL

$ ldd --version

ldd (Ubuntu GLIBC 2.35-0ubuntu3.1) 2.35

Copyright (C) 2022 ⾃由软件基⾦会。

这是⼀个⾃由软件;请⻅源代码的授权条款。本软件不含任何没有担保;甚⾄不保证适销性

或者适合某些特殊⽬的。

由 Roland McGrath 和 Ulrich Drepper 编写。1

2

3

4

5

6Bash

2MySQL8.0⼆进制包的安装 基于⼆进制包的安装

创建操作系统⽤户

解压⼆进制包,建⽴软链接

编辑配置⽂

$ sudo groupadd mysql

$ sudo useradd -g mysql mysql1

2

3Bash

# 解压到指定的⽬录下

$ sudo tar xvf mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz -C /usr/local

# 建⽴软链接

$ sudo ln -s mysql-8.0.33-linux-glibc2.28-x86_64/ mysql1

2

3

4

5Bash

3创建数据⽬录

初始化实例

$ sudo vim /etc/my.cnf

#######################

[client]

# 套接字

socket = /data/mysql/3306/data/mysql.sock

[mysqld]

# mysql安装⽬录

basedir = /usr/local/mysql

#

数据

⽬录datadir = /data/mysql/3306/data

# 运⾏⽤户

user = mysql

# 监听端⼝

port = 3306

socket = /data/mysql/3306/data/mysql.sock

# 错误⽇志

log_error = /data/mysql/3306/data/mysqld.err

# 设置⽇志时间戳的时区,默认是UTC,这⾥设置system,使⽤系统的时区设置

log_timestamps = system

#######################1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22Bash

$ sudo mkdir -p /data/mysql/3306/data

$ sudo chown mysql.mysql /data/mysql/3306/data/1

2

3Bash

4报错 /usr/local/mysql/bin/mysqld: error while loading shared libraries:

libaio.so.1: cannot open shared object file: No such file or directory

启动实例

$ sudo /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initializ

e

# --defaults-file 参数⽂件的路径

# --initialize 初始化实例并

成密码

# --initialize-insecure 初始化实例但不⽣成密码1

2

3

4

5Bash

# ubuntu

$ sudo apt install libaio-dev

# centos

yum install libaio1

2

3

4

5Bash

5启动失败定位步骤

数据⽬录中的⽂件

$ sudo /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

# 查看启动是否成功⽅式⼀

$ sudo cat /data/mysql/3306/data/mysqld.err

.....

2023-06-16T21:22:52.334364+08:00 0 [System] [MY-010931] [Server] /usr/loca

l/mysql/bin/mysqld: ready for connections. Version: '8.0.33' socket: '/da

ta/mysql/3306/data/mysql.sock' port: 3306 MySQL Community Server - GPL.

# 查看启动是否成功⽅式⼆

$ ps aux | grep mysqld

root 213152 0.0 0.0 2888 1872 pts/1 S 21:22 0:00 /bin/s

h /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf

mysql 213303 1.9 10.0 1752060 398360 pts/1 Sl 21:22 0:02 /usr/lo

cal/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysq

l --datadir=/data/mysql/3306/data --plugin-dir=/usr/local/mysql/lib/plugi

n --user

=

mysql --log-error=/data/mysql/3306/data/mysqld.err --pid-file=Doc

ker.pid --socket=/data/mysql/3306/data/mysql.sock --port=3306

1

2

3

4

5

6

7

8

9

10

11

12Bash

# 1. 查看错误⽇志,常⻅错误

# 端⼝被占⽤

# 参数名写错

# 参数在当前版本不⽀持

# 2. 通过mysqld启动

$ sudo /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf &

# 3. 通过mysqld启动,指定必要参数。使⽤--no-defaults避免读取默认位置配置⽂件

$ sudo /usr/local/mysql/bin/mysqld --no-defaults --basedir=/usr/local/mysq

l --datadir=/data/mysql/3306/data/ --user=mysql1

2

3

4

5

6

7

8

9

10Bash

6$ ll /data/mysql/3306/data/

总计 90592

drwxr-xr-x 7 mysql mysql 4096 6⽉ 16 21:22 ./

drwxr-xr-x 3 root root 4096 6⽉ 16 15:27 ../

-rw-r----- 1 mysql mysql 56 6⽉ 16 21:15 auto.cnf # 记录实例的ser

ver-uuid

-rw-r----- 1 mysql mysql 157 6⽉ 16 21:22 binlog.000001

-rw-r----- 1 mysql mysql 16 6⽉ 16 21:22 binlog.index

-rw------- 1 mysql mysql 1680 6⽉ 16 21:15 ca-key.pem

-rw-r--r-- 1 mysql mysql 1112 6⽉ 16 21:15 ca.pem

-rw-r--r-- 1 mysql mysql 1112 6⽉ 16 21:15 client-cert.pem # 与RSA相

关的证书⽂件及私钥⽂件,⽤于开启SSL加密连接

-rw------- 1 mysql mysql 1680 6⽉ 16 21:15 client-key.pem

-rw-r----- 1 mysql mysql 7 6⽉ 16 21:22 Docker.pid

-rw-r----- 1 mysql mysql 196608 6⽉ 16 21:24 '#ib_16384_0.dblwr'

-rw-r----- 1 mysql mysql 8585216 6⽉ 16 21:15 '#ib_16384_1.dblwr'

-rw-r----- 1 mysql mysql 5632 6⽉ 16 21:16 ib_buffer_pool # ⽂本⽂

件,记录了缓冲池中数据⻚的地址(space_id和page_no)。数据库在启动后,可直接将指定的数据

⻚加载到缓冲池中,避免了较⻓的预热时间

-rw-r----- 1 mysql mysql 12582912 6⽉ 16 21:22 ibdata1 # 系统表空间,主要

包括数据字典信息、双写缓冲区(doublewrite buffer)和插⼊缓冲区(insert buffer)等。My

SQL8.0.20开始,双写缓冲区会存储在'#ib_16384_0.dblwr'和'#ib_16384_1.dblwr'中

-rw-r----- 1 mysql mysql 12582912 6⽉ 16 21:22 ibtmp1 # 全局级别的临时表空

间,主要⽤于存储⽤户创建的临时表所做变更的回滚段

drwxr-x--- 2 mysql mysql 4096 6⽉ 16 21:22 '#innodb_redo'/

drwxr-x--- 2 mysql mysql 4096 6⽉ 16 21:22 '#innodb_temp'/ # 会话级别

的临时表空间,主要⽤于存储⽤户创建的临时表和SQL在执⾏过程中产⽣的磁盘临时表

drwxr-x--- 2 mysql mysql 4096 6⽉ 16 21:15 mysql/ # mysql库,主要包括

⼀些系统表,如授权相关的表(user/db/tables_priv/columns_priv/procs_priv/proxies

_priv)、⽇志相关的表(general_log/slow_log)、复制相关的表(slave_master_info/sla

ve_relay_log_info)。MySQL8.0开始,除了⽇志相关的表,其他表放在单独的共享表空间中(my

sql.ibd)

-rw-r----- 1 mysql mysql 1473 6⽉ 16 21:22 mysqld.err # 错误⽇志

-rw-r----- 1 mysql mysql 25165824 6⽉ 16 21:22 mysql.ibd

srwxrwxrwx 1 mysql mysql 0 6⽉ 16 21:22 mysql.sock=

-rw------- 1 mysql mysql 7 6⽉ 16 21:22 mysql.sock.lock

drwxr-x--- 2 mysql mysql 4096 6⽉ 16 21:15 performance_schema/ # 采集

了MySQL运⾏过程中的性能数据

-rw------- 1 mysql mysql 1680 6⽉ 16 21:15 private_key.pem

-rw-r--r-- 1 mysql mysql 452 6⽉ 16 21:15 public_key.pem