当前位置: 首页 > news >正文

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

文章目录

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

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

1.2.2 关闭selinux

# 临时关闭
[root@db01 ~]# setenforce 0
setenforce: SELinux is disabled
# 永久关闭
[root@db01 ~]# vim /etc/selinux/config 

在这里插入图片描述

# 查看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 上传软件包

在这里插入图片描述

在这里插入图片描述

# 解压
[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"

在这里插入图片描述

[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 创建数据库存储数据目录

[root@db01 /usr/local]# mkdir -p /data/3306/data/

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

[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.6mysql_install_db初始化的命令不一致,参数相同(无管理员密码)
5.7 8.0mysqld–initialize-insecure表示不安全方式初始化(无管理员密码)
–initialize表示安全方式初始化(有随机默认管理员密码)

1.4 编写服务配置文件

[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/目录下
# 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 statusSUCCESS! 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 步骤二:关闭数据库服务程序

[root@db01 ~]# /etc/init.d/mysqld stop
Shutting down MySQL. SUCCESS! 
[root@db01 ~]# /etc/init.d/mysqld statusERROR! 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(解释)
AlterTables管理表的字段、索引
CreateDatabases,Tables,Indexes可以创建数据库、表、索引
Create userServer Admin(管理员)可以创建新用户
DropDatabases,Tables可以删除数据库、表、视图
DeleteTables可以删除表中数据行
InsertTables可以向表中添加数据
UpdateTables可以修改表中数据
SelectTables可以查询表中数据
UsageServer AdminNo 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服务,并自定义配置文件
[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 步骤二:编写配置文件

# 创建不同实例的数据存储目录
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
EOFcat >> /data/3308/mysql.conf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3308/data
socket=/tmp/mysql3308.sock
port=3308
mysqlx=0
EOFcat >> /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 步骤三:初始化不同数据库

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 步骤四:启动多实例数据库进程

mysqld --defaults-file=/data/3307/mysql.conf &
mysqld --defaults-file=/data/3308/mysql.conf &
mysqld --defaults-file=/data/3309/mysql.conf &

在这里插入图片描述

# 登录数据库
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

http://www.xdnf.cn/news/1335259.html

相关文章:

  • 《算法导论》第 35 章-近似算法
  • imx6ull-驱动开发篇31——Linux异步通知
  • 极其简单二叉树遍历JAVA版本
  • 虚拟机部署HDFS集群
  • Redisson最新版本(3.50.0左右)启动时提示Netty的某些类找不到
  • VR交通安全学习机-VR交通普法体验馆方案
  • 从防抖节流到链表树:编程世界中的抽象优化艺术
  • C++智能指针详解:告别内存泄漏,拥抱安全高效
  • Flask高效数据库操作指南
  • C++ MFC/BCG编程:文件对话框(CFileDialog、CFolderPickerDialog)
  • CFBench评测
  • (一)关于步进电机的FOC控制
  • DeepSeek大模型如何重塑AI Agent?从技术突破到行业落地
  • 意象框架:连接感知与认知的统一信息结构分析——基于上古汉语同源词意义系统的词源学与认知语言学探索
  • (认识异常)
  • SED项目复现学习实录
  • JSON::Value 功能详解:从三目运算符到高级用法
  • Git Commit 提交信息标准格式
  • 48 C++ STL模板库17-容器9-关联容器-映射(map)多重映射(multimap)
  • C++进阶-----C++11
  • 【数据结构】线性表——顺序表
  • Linux Shell 常用操作与脚本示例详解
  • CAMEL-Task1-CAMEL环境配置及你的第一个Agent
  • rsync + inotify 数据实时同步
  • 吴恩达 Machine Learning(Class 3)
  • Spring Boot 实战:从项目搭建到部署优化
  • (Python)[特殊字符] 基于Flask/FastAPI的RESTful API服务 + 数据库 + 缓存 + 简单前端 (Python项目)
  • Altium Designer 22使用笔记(8)---PCB电气约束设置
  • PyTorch API 3 - distributed
  • Flink双流join