#1.数据库服务企业应用类型?
##1.1 关系型数据库(行和列)mysql
- 代表服务:mysql* mariadb oracle(高级数据库课程)pg SQLserver access ....
- 功能作用:可以将数据合理化永久存储(磁盘中)
##1.2 非关系数据库(键key和值values)
- 代表服务:redis* mongodb* memcache Elasticsearch(日志型数据)过滤Logstash 展示 Kibana
- 功能作用:可以将数据高效存储和读取(内存中/磁盘中)
https://db-engines.com/en/ranking
##1.3 分布型数据库(兼容了关系型+非关系型数据库特定)
- 代表服务:OB(OceanBase-蚂蚁金服) PingCAP-TiDB 华为-Guess Base
- 功能作用:可以合理化存储数据,并且也可以高效存储/调取数据
#2.数据库服务安装部署
MySQL数据库服务安装方式:(二进制包安装)
安装方式一:yum/apt-get 可以解决软件依赖关系(配置好下载源)
安装方式二:rpm包安装 需要提前在软件包,离线安装软件
安装方式三:源码编译安装 可以定制化安装软件,离线安装软件
安装方式四:二进制包安装 可以快速部署数据库, 离线安装软件 安装过程快速 安装过程简单
##2.1 MySQL二进制包安装服务过程
###2.1.1 步骤一:下载获取二进制软件包
访问官网:www.mysql.com
mysql -8.4.2 -linux -glibc2.17 -x86_64 .tar.xz
数据库名称 版本号 系统信息 内核信息 架构信息 压缩包
统一使用/下载版本:mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
###2.1.2 步骤二:系统环境基础配置(优化)
1)确认系统是否可以连网/可以远程控制
ping www.baid.com
2)修改系统主机名称/设置名称和地址解析(可选)
hpstnamectl set-hostname DB-01
echo "10.0.0.51 DB-01" >>/etc/hosts
3)关闭系统安全功能
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i '7s#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
4)清理系统中的数据库服务
rpm -qa|grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
yum remove -y `rpm -qa|grep mariadb`
- 安装mysql依赖软件
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum install -y libaio-devel
yum install -y lrzsz tree vim wget net-tools
6)创建服务用户与存储数据目录
useradd mysql -M -s /sbin/nologin
mkdir -p /data/3306/data && chown mysql.mysql /data/3306/data
###2.1.3 步骤三:解压安装数据库软件程序
cd /usr/local/
tar xvf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
ln -s mysql-8.0.32-linux-glibc2.12-x86_64 mysql #重要目录bin,存放数据库的命令信息(mysql mysqladmin mysqldump ...)
vim /etc/profile
export PATH="$PATH:/usr/local/mysql/bin" # 保存配置信息
source /etc/profile # 加载最新环境变量配置
mysql -V #可以看到数据库版本信息,表示数据库安装完毕
mysql Ver 8.0.32 for Linux on x86_64 (MySQL Community Server - GPL)
###2.1.4 步骤四:编写数据库服务配置文件
cat > /etc/my.cnf <<eof
[mysql]
socket=/tmp/mysql.sock
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
socket=/tmp/mysql.sock
eof
###2.1.5 步骤五:数据库服务初始化操作(创建默认数据库中数据信息)
mysql 8.0 5.7 数据库服务
mysqld --initialize-insecure --user=mysql --datadir=/data/3306/data --basedir=/usr/local/mysql #进行不安全初始化,不会创建root用户临时密码(root用户可以免密登录)
mysqld --initialize #安全初始化 (初始化后,数据库管理用户需要使用密码登录)
(mysqld 8.0.32) initializing of server in progress as process 2090
2024-10-08T03:56:46.184294Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-10-08T03:56:47.034991Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-10-08T03:56:48.696529Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.#没有看到初始化中的错误或失败信息,表示初始化成功(不安全)
##2.2 初始化常见问题:
1)依赖软件没有正确安装
yum install -y libaio-devel
[报错信息]:
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
[解决方法]:
yum install -y libaio-devel
2)系统数据目录或用户没有创建
[报错信息]:
[ERROR] [MY-010124] [Server] Fatal error: Can't change to run as user 'mysql' ; Please check that the user exists!'
[解决方法]:
useradd mysql -M -s /sbin/nologin
mkdir -p /data/3306/data && chown mysql.mysql /data/3306/data
3)系统配置文件信息编写正确
PS:
01 执行初始化命令和参数信息输入正确
02 若初始化有问题,需要将数据目录内容清空,再重新初始化
mysqld --initialize --user=mysql --datadir=/data/3306/data --basedir=/usr/local/mysql
-- 进行安全初始化,会创建root用户临时密码(root用户需要使用密码登录),登录上还要修改密码(root用户没有管理权)
A temporary password is generated for root@localhost: 71Z00yLoRU(r
mysql 5.5 5.6 数据库服务
mysql_install_db --user=mysql --datadir=/data/3306/data --basedir=/usr/local/mysql
##2.3 数据库启动关闭管理
###2.3.1 方式一:利用脚本文件启动关闭
功能作用:可以默认实现数据单实例启动过程
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/
[root@db-01 local]# /etc/init.d/mysql.server start
Starting MySQL.Logging to '/data/3306/data/db-01.err'.
... SUCCESS!
###2.3.2 方式二:利用命令文件启动关闭
mysqld_safe #启动数据库服务 停止服务 pkill kill killall
mysqld #启动数据库服务 停止服务 pkill kill killall
systemctl #启动数据库服务 停止服务 systemctl stop
mysqld -- 执行mysqld命令,可以运行数据库工作进程
mysqld --plugin-dir=/usr/local/mysql/lib/plugin &
关闭服务:
kill 进程号
pkill mysql
mysqld_safe -- 执行mysqld_safe命令,可以运行数据库管理进程(顺带mysqld进程运行)
mysqld_safe &
关闭服务:
pkill mysql
/etc/init.d/mysql.server stop
systemctl
方法一:编写mysql.service文件,被systemctl命令加载(systemctl daemon-reload)
方法二:利用systemctl命令加载数据库脚本文件(/etc/init.d/mysql.server)
systemctl enable mysql.server
systemctl start mysql.server
systemctl status mysql.server -- /etc/rc.d/init.d/mysql.server -- Active: active (running)
systemctl stop mysql.server
##2.4 数据库密码信息管理
###2.4.1 设置密码
mysqladmin -uroot password "123456"
mysql> alter user root@'localhost' identified by '123';
###2.4.2 修改密码
mysqladmin -uroot -p123456 password "oldboy123"
mysql> alter user root@'localhost' identified by '123';
###2.4.3 重置密码: (不知道原有密码-root 如何修改密码信息)
步骤一:需要关闭数据库服务(企业中需要有通知)
/etc/init.d/mysql.server stop
步骤二:采用安全模式启动数据库(免密登录)
mysqld --skip-grant-tables --skip-networking & --skip-grant-tables:跳过授权表启动数据库,可以免密登录(不加载磁盘中的mysql.user)
--skip-networking: 跳过网络服务功能,数据库服务启动后关闭端口信息 (避免服务远程访问 -- 免密访问 -- 不安全)
步骤三:修改数据库管理员密码
mysql> flush privileges; -- 可以加载mysql.user表,从磁盘加载到内存
mysql> alter user root@'localhost' identified by '123';
步骤四:重新正常启动数据库服务
mysql> shutdown; 关闭数据库服务
/etc/init.d/mysql.server start
步骤五:重新登录数据库测试密码信息
mysql -uroot -pxiaoQ123
##2.5 数据库用户管理知识
###2.5.1 创建用户
create user "用户名"@"连接用户白名单信息(地址 域名)" identified by "密码信息";
连接用户白名单信息(地址 域名)?
数据库服务访问方式:本地访问(在数据库所在的系统中访问数据库) 远程访问(在其他服务器系统中连接当前数据库服务)用户白名单信息,表示指定只允许什么方式的客户端进行连接
本地访问设置:
create user 'xiaoQ'@'localhost' identified by "123";
create user 'xiaoQ'@'127.0.0.1' identified by "123";
远程访问设置:
create user 'xiaoQ'@'10.0.0.%' identified by "123"; -- 只允许10.0.0.0/24网段内的主机进行访问 (10.0.0.1~10.0.0.254)
设置A类网段:10.% /8
设置B类网段:172.16.% /16
设置C类网段:192.168.10.% /24
create user 'xiaoQ'@'10.0.0.53' identified by "123"; -- 只允许10.0.0.53主机进行访问
create user 'xiaoQ'@'web01.com' identified by "123";
vim /etc/hosts
10.0.0.12 web01.com
###2.5.2 查看用户
mysql> select user,host from mysql.user;
###2.5.3 删除用户
drop user "用户名"@"连接用户白名单信息(地址 域名)"
mysql> drop user xiaoA@'10.0.0.%';
delete from mysql.user where 删除用户条件信息;
mysql> delete from mysql.user where user='xiaoC' and host='10.0.0.52';
###2.5.4 修改用户(修改密码信息)
alter user root@'localhost' identified by 'xxxx'; -- 修改密码
alter user root@'localhost' identified with mysql_native_password by '123456';-- 修改密码加密方式:
plugin: caching_sha2_password 加密方式/加密插件
密码信息:$A$005$WV%%{
D}x^N*7ahsIlJLdet.G37hSEHEyqSCMl455vPXwwbJNxOi7kKGunbRlA
plugin: mysql_native_password
密码信息:*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
优势:设置密码插件,可以提高弱密码破解难度
缺陷:可能导致一些远程工具或程序代码连接不上数据库服务