day075-MySQL数据库服务安装部署与基础服务管理命令

文章目录

  • [0. 老男孩思想-老男孩名言警句](#0. 老男孩思想-老男孩名言警句)
  • [1. 数据库服务安装部署](#1. 数据库服务安装部署)
    • [1.1 下载安装包](#1.1 下载安装包)
    • [1.2 系统环境准备](#1.2 系统环境准备)
      • [1.2.1 关闭防火墙](#1.2.1 关闭防火墙)
      • [1.2.2 关闭selinux](#1.2.2 关闭selinux)
      • [1.2.3 安装依赖软件](#1.2.3 安装依赖软件)
      • [1.2.4 卸载冲突软件](#1.2.4 卸载冲突软件)
    • [1.3 安装程序](#1.3 安装程序)
      • [1.3.1 上传软件包](#1.3.1 上传软件包)
      • [1.3.2 配置环境变量](#1.3.2 配置环境变量)
      • [1.3.3 创建数据库存储数据目录](#1.3.3 创建数据库存储数据目录)
      • [1.3.4 创建数据库程序管理用户](#1.3.4 创建数据库程序管理用户)
      • [1.3.5 初始化数据库](#1.3.5 初始化数据库)
    • [1.4 编写服务配置文件](#1.4 编写服务配置文件)
    • [1.5 启动数据库服务](#1.5 启动数据库服务)
  • [2. 数据库服务密码管理](#2. 数据库服务密码管理)
    • [2.1 设置密码](#2.1 设置密码)
    • [2.2 修改密码](#2.2 修改密码)
      • [2.2.1 命令,需原密码](#2.2.1 命令,需原密码)
      • [2.2.2 sql语句,无需原密码](#2.2.2 sql语句,无需原密码)
    • [2.3 重置密码(忘记密码的情况)](#2.3 重置密码(忘记密码的情况))
      • [2.3.1 步骤一:备份数据库数据](#2.3.1 步骤一:备份数据库数据)
      • [2.3.2 步骤二:关闭数据库服务程序](#2.3.2 步骤二:关闭数据库服务程序)
      • [2.3.3 步骤三:采用免密方式启动数据库](#2.3.3 步骤三:采用免密方式启动数据库)
      • [2.3.4 步骤四:重置密码](#2.3.4 步骤四:重置密码)
      • [2.3.5 步骤五:重新启动数据库](#2.3.5 步骤五:重新启动数据库)
  • [3. 数据库服务用户管理](#3. 数据库服务用户管理)
    • [3.1 创建用户](#3.1 创建用户)
      • [3.1.1 白名单](#3.1.1 白名单)
      • [3.1.2 密码插件](#3.1.2 密码插件)
    • [3.2 查看用户信息](#3.2 查看用户信息)
    • [3.3 删除用户信息](#3.3 删除用户信息)
      • [3.3.1 drop-删除单个用户](#3.3.1 drop-删除单个用户)
      • [3.3.2 delete-批量删除用户](#3.3.2 delete-批量删除用户)
  • [4. 数据库服务权限管理](#4. 数据库服务权限管理)
    • [4.1 查看MySQL数据库的所有权限](#4.1 查看MySQL数据库的所有权限)
    • [4.2 基础权限](#4.2 基础权限)
    • [4.3 设置用户权限](#4.3 设置用户权限)
    • [4.4 查看用户权限](#4.4 查看用户权限)
    • [4.5 回收用户权限](#4.5 回收用户权限)
  • [5. 数据库服务配置管理](#5. 数据库服务配置管理)
    • [5.1 加载数据库配置文件](#5.1 加载数据库配置文件)
      • [5.1.1 采用默认方式加载](#5.1.1 采用默认方式加载)
      • [5.1.2 自定义加载配置文件](#5.1.2 自定义加载配置文件)
    • [5.2 编写配置文件](#5.2 编写配置文件)
  • [6. 数据库服务连接管理](#6. 数据库服务连接管理)
    • 6.1数据库连接方式
    • [6.2 数据库连接方法](#6.2 数据库连接方法)
      • [6.2.1 数据库客户端命令](#6.2.1 数据库客户端命令)
      • [6.2.2 数据库客户端工具-MySQL Workbench](#6.2.2 数据库客户端工具-MySQL Workbench)
  • [7. 数据库服务实例创建](#7. 数据库服务实例创建)
    • [7.1 为什么在系统中要运行服务的多实例?](#7.1 为什么在系统中要运行服务的多实例?)
    • [7.2 相同版本数据库实现多实例部署](#7.2 相同版本数据库实现多实例部署)
      • [7.2.1 步骤一:安装数据库程序(8.0.36)](#7.2.1 步骤一:安装数据库程序(8.0.36))
      • [7.2.2 步骤二:编写配置文件](#7.2.2 步骤二:编写配置文件)
      • [7.2.3 步骤三:初始化不同数据库](#7.2.3 步骤三:初始化不同数据库)
      • [7.2.4 步骤四:启动多实例数据库进程](#7.2.4 步骤四:启动多实例数据库进程)
  • [8. 思维导图](#8. 思维导图)

0. 老男孩思想-老男孩名言警句

  • 技术的提升仅是量的积累,思想的提升才是质的飞跃
  • 成功绝非偶然,而是正确选择和持续努力后的必然
  • 成功最有效的途径就是不断的和有经验的、成功的人学习
  • 学习成功人士的思维和习惯,是成功的捷径
  • 要做别人不敢做、做不到的事,才能从竞争者胜出
  • 自己最不想改变的,往往是自己最需要改变的;要多接收、多学习他人的思维或习惯
  • 找一个能让自己快速成长的企业,比多1-2千工资更重要
  • 身份影响认知,气度主导格局,性格决定命运
  • 超越自我,就是做自己不想做的事
  • 永远不要试图改变一个人,只能去包容他
  • 如果自己不能成为大佬,可以先成为大佬的赞美者

1. 数据库服务安装部署

  • 博客:MySQL数据库服务安装部署 - aiweiwei24 - 博客园](https://www.cnblogs.com/oldboy-heqing/articles/19024691)
  • [CentOS7.9使用yum方式安装mysql8.0.27(2022最新版) - 老男孩老师 - 博客园](https://www.cnblogs.com/oldboy666/p/15559963.html)
  • 00章节-MySQL数据库服务安装部署.pdf 链接: https://pan.baidu.com/s/19QqQnCOkcrL-ao2Iu9L05A?pwd=k3m5 提取码: k3m5
  • 01章节-MySQL数据库存储服务概述.pdf 链接: https://pan.baidu.com/s/19aXuUnqNMt57AlHCOb7ywA?pwd=ip8t 提取码: ip8t

1.1 下载安装包

官网:MySQL

  • 下载历史版本:[MySQL :: Download MySQL Community Server (Archived Versions)](https://downloads.mysql.com/archives/community/)
  • 软件包:mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz 链接: https://pan.baidu.com/s/1lnrLcEVtlj_SriZzm1SScw?pwd=5m74 提取码: 5m74

1.2 系统环境准备

  • 系统:kylin v10
shell 复制代码
[root@db01 ~]# uname -r
4.19.90-52.22.v2207.ky10.x86_64
[root@db01 ~]# cat /etc/os-release 
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Lance)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Lance)"
ANSI_COLOR="0;31"

1.2.1 关闭防火墙

shell 复制代码
[root@db01 ~]# systemctl stop firewalld.service 
[root@db01 ~]# systemctl disable firewalld.service 
[root@db01 ~]# systemctl status firewalld.service 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

1.2.2 关闭selinux

shell 复制代码
# 临时关闭
[root@db01 ~]# setenforce 0
setenforce: SELinux is disabled
# 永久关闭
[root@db01 ~]# vim /etc/selinux/config 
shell 复制代码
# 查看selinux状态
[root@db01 ~]# getenforce 
Disabled

1.2.3 安装依赖软件

  • yum install -y libaio-devel

1.2.4 卸载冲突软件

  • yum remove `rpm -qa |grep mysql`
  • yum remove `rpm -qa |grep mariadb`

1.3 安装程序

  • 安装路径:/usr/local/

1.3.1 上传软件包

shell 复制代码
# 解压
[root@db01 /usr/local]# tar xf mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz 
# 创建软链接
[root@db01 /usr/local]# ln -s mysql-8.0.36-linux-glibc2.12-x86_64 mysql

1.3.2 配置环境变量

  • export PATH="$PATH:/usr/local/mysql/bin"
shell 复制代码
[root@db01 /usr/local]# vim /etc/profile
[root@db01 /usr/local]# source /etc/profile
# 查看当前数据库版本
[root@db01 /usr/local]# mysql -V
mysql  Ver 8.0.36 for Linux on x86_64 (MySQL Community Server - GPL)

1.3.3 创建数据库存储数据目录

shell 复制代码
[root@db01 /usr/local]# mkdir -p /data/3306/data/

1.3.4 创建数据库程序管理用户

shell 复制代码
[root@db01 /usr/local]# useradd mysql -M -s /sbin/nologin
useradd:用户"mysql"已存在
[root@db01 /usr/local]# chown -R mysql:mysql /data/3306/data/

1.3.5 初始化数据库

  • 生成数据库的默认数据
  • 查看帮助手册:mysqld --help --verbose
  • 命令:mysqld --initialize-insecure --datadir=/data/3306/data--user=mysql --basedir=/usr/local/mysql
  • 数据库初始化不同版本差异
版本信息 命令信息 初始化操作参数 备注说明
5.5 5.6 mysql_install_db 初始化的命令不一致,参数相同(无管理员密码)
5.7 8.0 mysqld --initialize-insecure 表示不安全方式初始化(无管理员密码)
--initialize 表示安全方式初始化(有随机默认管理员密码)

1.4 编写服务配置文件

shell 复制代码
[root@db01 ~]# vim /etc/my.cnf
[root@db01 ~]# cat /etc/my.cnf
[mysql]
socket=/tmp/mysql.sock
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
socket=/tmp/mysql.sock

1.5 启动数据库服务

  • 早先的Linux系统的各种服务不是通过systemctl管理的,而是通过脚本控制的,这些脚本一般放在/etc/init.d/目录下
shell 复制代码
# mysql启动管理脚本文件
[root@db01 ~]# file /usr/local/mysql/support-files/mysql.server 
/usr/local/mysql/support-files/mysql.server: POSIX shell script, ASCII text executable
[root@db01 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 启动mysql服务
[root@db01 ~]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS! 
[root@db01 ~]# /etc/init.d/mysqld status
 SUCCESS! MySQL running (8311)
# 检查
[root@db01 ~]# ps -ef |grep [m]ysql
root        8160       1  0 21:22 pts/1    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/3306/data --pid-file=/data/3306/data/db01.pid
mysql       8311    8160  5 21:22 pts/1    00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/3306/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=db01.err --pid-file=/data/3306/data/db01.pid --socket=/tmp/mysql.sock
[root@db01 ~]# ss -lntup |grep [m]ysql
tcp     LISTEN   0        70                     *:33060                *:*      users:(("mysqld",pid=8311,fd=22))                      
tcp     LISTEN   0        128                    *:3306                 *:*      users:(("mysqld",pid=8311,fd=24)) 
  • 设置MySQL服务开机自启动:chkconfig --add mysqld

2. 数据库服务密码管理

2.1 设置密码

  • 命令:mysqladmin -uroot password '密码'

2.2 修改密码

2.2.1 命令,需原密码

  • mysqladmin -uroot -p旧命令 password "新密码"

2.2.2 sql语句,无需原密码

  • alter user root@'localhost' identified by "新密码";

2.3 重置密码(忘记密码的情况)

  • 无法进入数据库,且不知道原密码

2.3.1 步骤一:备份数据库数据

2.3.2 步骤二:关闭数据库服务程序

shell 复制代码
[root@db01 ~]# /etc/init.d/mysqld stop
Shutting down MySQL. SUCCESS! 
[root@db01 ~]# /etc/init.d/mysqld status
 ERROR! MySQL is not running

2.3.3 步骤三:采用免密方式启动数据库

  • 类似于Linux系统的救援模式
  • 命令:mysqld --skip-grant-tables &
    • --skip-grant-tables: 跳过授权表(忽略数据库验证机制)

2.3.4 步骤四:重置密码

  • 当前已关闭授权表验证机制,在修改密码之前还需加载授权表
  • 重新加载权限表:FLUSH PRIVILEGES;

2.3.5 步骤五:重新启动数据库

3. 数据库服务用户管理

3.1 创建用户

语法:create user 用户名@'白名单' identified with 密码插件 by '密码';

3.1.1 白名单

  • 作用一:用于指定用户登录数据库的方式
    • 本地登录:localhost
    • 远程登录:10.0.0.10、10.0.0.%、%
  • 作用二:限制指定的用户才能登录数据库
    • 限制某个主机地址:10.0.0.100
    • 限制C类网络地址:192.168.1.%
    • 限制B类网络地址:172.16.%
    • 限制A类网络地址:10.%
    • 不做限制:%

3.1.2 密码插件

作用:增加数据库密码的安全性

  • 查看用户的密码信息:select user,host,authentication_string,plugin from mysql.user;
  • 密码插件设置方式:
    • mysql_native_password:8.0版本前默认密码加密方式
    • caching_sha2_password:8.0版本后默认密码加密方式

3.2 查看用户信息

  • 语句:select user,host,authentication_string,plugin from mysql.user;
  • select * from mysql.user\G:分行显示数据

3.3 删除用户信息

3.3.1 drop-删除单个用户

  • sql语句:drop user 用户名@'白名单';

3.3.2 delete-批量删除用户

  • sql语句:delete from mysql.user where user='用户名';

4. 数据库服务权限管理

4.1 查看MySQL数据库的所有权限

  • 命令:show privileges;

4.2 基础权限

Privilege(权限) Context(管理对象) Comment(解释)
Alter Tables 管理表的字段、索引
Create Databases,Tables,Indexes 可以创建数据库、表、索引
Create user Server Admin(管理员) 可以创建新用户
Drop Databases,Tables 可以删除数据库、表、视图
Delete Tables 可以删除表中数据行
Insert Tables 可以向表中添加数据
Update Tables 可以修改表中数据
Select Tables 可以查询表中数据
Usage Server Admin No privileges(没有任何操作能力)- allow connect only 使用此权限可以连接数据库

4.3 设置用户权限

语法:grant 权限信息 on 对象信息(数据库和表) to 用户名@'白名单';

各个权限用','隔开,表示所有权限可使用'all'关键字;

数据库和表可以使用通配符:'*'

  • 对于用户:skx@'localhost',设置该用户对blog数据库有创建、删除的权限,以及对数据库中表有增删改查的权限。
  • sql语句:grant Create,Drop,Delete,Insert,Update,Select on blog.* to skx@'localhost';

4.4 查看用户权限

语法:show grants for 用户名@'白名单';

4.5 回收用户权限

  • 添加权限直接使用权限设置语句即可。

回收权限语法:revoke 权限信息 on 对象信息 from 用户名@'白名单';

  • 对于skx@'localhost'用户,回收Drop权限
  • sql语句:revoke Drop on blog.* from skx@'localhost';

5. 数据库服务配置管理

5.1 加载数据库配置文件

  • 配置文件:my.cnf

5.1.1 采用默认方式加载

  • 官方定义配置文件可以放置的路径

5.1.2 自定义加载配置文件

  • 关闭mysql服务,并自定义配置文件
shell 复制代码
[root@db01 ~]# /etc/init.d/mysqld stop
Shutting down MySQL.. SUCCESS! 
[root@db01 ~]# mv /etc/my.cnf /data/3306/mysql.conf
  • 启动mysql服务,指定配置文件位置:mysqld --defaults-file=/data/3306/mysql.conf &

5.2 编写配置文件

6. 数据库服务连接管理

6.1数据库连接方式

  • 本地连接:必须设置好socket(套接字文件 确认客户端使用套接字文件和服务端创建的套接字文件一致即可)

mysql -uroot -pxiaoQ123 -S /tmp/mysql3306.sock

  • 远程连接:设置好TCP、IP信息

mysql -uroot -pxiaoQ123 -h10.0.0.51 -P3306

6.2 数据库连接方法

6.2.1 数据库客户端命令

mysql -uroot -pxiaoQ123 -S /tmp/mysql3306.sock -- 本地连接

mysql -uroot -pxiaoQ123 -h10.0.0.51 -P3306 -- 远程连接

弊端:无法实现命令提示或补全功能

6.2.2 数据库客户端工具-MySQL Workbench

  • 优点:可以图形化操作管理数据库,操作管理简便
  • 官网地址:[MySQL :: Download MySQL Workbench](https://dev.mysql.com/downloads/workbench/)
  • 软件包:mysql-workbench-community-8.0.43-winx64.msi 链接: https://pan.baidu.com/s/1I7dpk6_GdISOa3mobRmvpw 提取码: 5ki8
  • 创建root远程连接用户
  • 使用客户都工具连接数据库
  • 查看某张表

7. 数据库服务实例创建

数据库实例就是数据库服务的进程

  • 数据库服务系统环境中,可以有多个数据库实例,称为数据库多实例

7.1 为什么在系统中要运行服务的多实例?

  • 类似于虚拟化、docker,更充分的使用系统硬件资源
  • 可以将数据库资源进行隔离,不同的业务数据存放在不同的数据库中

7.2 相同版本数据库实现多实例部署

  • 注意事项:
    • 配置文件不同
    • socket套接字文件不同
    • 端口不同
    • 启动的进程不同

7.2.1 步骤一:安装数据库程序(8.0.36)

7.2.2 步骤二:编写配置文件

shell 复制代码
# 创建不同实例的数据存储目录
mkdir -p /data/{3307..3309}/data
# 配置文件
cat >> /data/3307/mysql.conf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3307/data
socket=/tmp/mysql3307.sock
port=3307
mysqlx=0
EOF

cat >> /data/3308/mysql.conf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3308/data
socket=/tmp/mysql3308.sock
port=3308
mysqlx=0
EOF

cat >> /data/3309/mysql.conf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3309/data
socket=/tmp/mysql3309.sock
port=3309
mysqlx=0
EOF

7.2.3 步骤三:初始化不同数据库

shell 复制代码
mv /etc/my.cnf /etc/my.cnf.bak
mysqld --initialize-insecure --datadir=/data/3307/data --user=mysql  --basedir=/usr/local/mysql
mysqld --initialize-insecure --datadir=/data/3308/data --user=mysql  --basedir=/usr/local/mysql
mysqld --initialize-insecure --datadir=/data/3309/data --user=mysql  --basedir=/usr/local/mysql

7.2.4 步骤四:启动多实例数据库进程

shell 复制代码
mysqld --defaults-file=/data/3307/mysql.conf &
mysqld --defaults-file=/data/3308/mysql.conf &
mysqld --defaults-file=/data/3309/mysql.conf &
shell 复制代码
# 登录数据库
mysql -S /tmp/mysql3307.sock
mysql -S /tmp/mysql3308.sock
mysql -S /tmp/mysql3309.sock

8. 思维导图

https://kdocs.cn/join/gpuxq6r?f=101\\r\\n邀请你加入共享群「老男孩教育Linux运维99期-孙克旭」一起进行文档协作

Linux系统运维班课程-Day01-数据库课程知识梳理.xmind 链接: https://pan.baidu.com/s/1BTKZu-cBNeAHjkvL9FCZYw?pwd=s7ec 提取码: s7ec