网站备案有什么坏处,腰椎间盘突出压迫神经腿疼怎么治疗,平湖有做网站得吗,互联网医院Day01-MySQL数据库介绍及部署 1、数据库服务概述介绍1.1 企业中为什么需要数据库#xff1f;1.2 数据库服务作用1.3 数据库服务分类 2、数据库服务安装部署2.1 数据库版本应用2.2 数据库服务程序下载2.3 数据库软件安装方式2.3.1 二进制安装步骤 3、数据库服务初始化介绍3.1 安… Day01-MySQL数据库介绍及部署 1、数据库服务概述介绍1.1 企业中为什么需要数据库1.2 数据库服务作用1.3 数据库服务分类 2、数据库服务安装部署2.1 数据库版本应用2.2 数据库服务程序下载2.3 数据库软件安装方式2.3.1 二进制安装步骤 3、数据库服务初始化介绍3.1 安全模式初始化3.2 非安全模式初始化3.3 知识点补充非安全模式设置管理员密码3.3.1 设置密码方式一没有密码设置密码3.3.2 设置密码方法二修改密码信息3.3.3 设置密码方法三忘记密码进行密码重置 4、数据库服务用户管理4.1 创建用户 useradd create解决数据库加密问题客户端 -- 服务端 4.2 查看用户 id select4.3 删除用户 userdel drop4.4 修改用户 usermod alter补充8.0版本与之前数据库版本 用户管理区别 5、数据库服务授权管理6、数据库服务授权表介绍6.1 设置角色功能实践 7、数据库服务密码重置实践 1、数据库服务概述介绍
1.1 企业中为什么需要数据库
数据图片 文字 视频 用户名 密码 代码信息html php jar地址 人类识别 – 保存
数据二进制信息 – 保存 --磁盘
人类可识别信息 - DBMS数据库管理系统- 二进制 -磁盘颗粒-正负极
DBMS分类
RDBMS关系型数据库软件主流核心使用数据库软件
NoSQL非关系数据库软件辅助数据库软件程序
DDBMS分布式数据库软件解决海量数据存储与管理NewSQL
1.2 数据库服务作用
可以实现数据稳定存储安全性可以分析管理数据信息数据分析查询 注册 – 数据库识别 – 二进制 – 磁盘
1.3 数据库服务分类
第一代数据库产品实现数据整合
01 关系型数据库二维表结构数据库 excel
DBMS管理系统
库
表
字段/记录
代表产品MySQL Oracle Mariadb 10.x SQLserver国企 校园PostgreSQLPGSQL海量数据存储场景–金融行业
第二代数据库产品实现数据拆分 解决并发压力
02 非关系型数据库提高数据存储和读取效率内存存储数据 辅助关系型数据库解决高并发访问问题
key value 键值对 抖音/B站 – 点赞1000 收藏数量 100
代表产品Redis mongdb文档型数据库关系型数据库 memcache ES日志信息存储
第三代数据库产品实现业务整合
03 新型数据库 业务整合 分布式垂直分布式 水平分布式
代表产品OceanBase TiDB PolarDB
数据信息来源参考https://www.modb.pro/dbRank
数据信息来源参考https://db-engines.com/en/ranking
数据信息来源参考https://www.itdks.com/
2、数据库服务安装部署
2.1 数据库版本应用
面试题目你之前用的数据库服务是什么 用的是什么版本
MySQL数据库产品Oracle MySQL Mariadb MySQL 5.5 10的版本 Percona MySQL工具 辅助管理数据库
MySQL数据库版本
大版本
5.5 5.5 GA最新版本 5.5.62 18年发布
5.6 5.6 GA最新版本 双数版本 5.6.26 38 40
5.7 5.7
PS以上三个版本都已停止更新维护
8.0
C版 社区版 – 免费版
E版 企业版 – 盈利版
CLuster集群版 – 收费版
PS主要讲解8.0.26 MySQL
2.2 数据库服务程序下载
官网下载http://www.mysql.com
查看系统C语言版本
[rootlocalhost ~]# getconf GNU_LIBC_VERSION
glibc 2.17
[rootlocalhost ~]# 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.
Written by Roland McGrath and Ulrich Drepper.2.3 数据库软件安装方式
方式一利用yum进行安装 更新yum源 https://dev.mysql.com/downloads/ 最新版本 依赖于网络 下载最新方式二利用rpm进行安装 离线安装 rpm -ivh xxx.rpm 依赖方式三源码安装 编译安装 cmake – make make install 用于数据库二次开发 30-1小时方式四二进制安装 解压完了 依赖需要解决 主推
2.3.1 二进制安装步骤
01 系统环境准备
# 虚拟主机环境1核 2G 100G
# 系统配置说明
# 网络地址10.0.0.51
# 主机名db01
# 域名解析10.0.0.51 db01
# 关闭防火墙
# 关闭selinux
# 卸载系统mariadb程序yum remove rpm -qa|grep mariadb
# 解决软件依赖yum install -y libaio-devel02 上传部署软件
# 确认操作系统数据库服务安装环境
[rootdb01 ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
-- 查看操作系统的版本信息[rootdb01 ~]# ip address show eth0
2: eth0: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:97:85:64 brd ff:ff:ff:ff:ff:ffinet 10.0.0.51/24 brd 10.0.0.255 scope global noprefixroute eth0valid_lft forever preferred_lft foreverinet6 fe80::ab2a:fb93:6cca:3ecd/64 scope link noprefixroute valid_lft forever preferred_lft forever
-- 查看操作系统的网卡地址[rootdb01 ~]# cat /etc/hosts
...省略部分信息...
10.0.0.51 db01
-- 查看系统本地域名解析信息[rootdb01 ~]# systemctl is-active firewalld
unknown
[rootdb01 ~]# systemctl is-enabled firewalld
disabled
-- 查看防火墙服务是否关闭[rootdb01 ~]# getenforce
Disabled
-- 查看selinux安全策略是否关闭[rootdb01 ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
[rootdb01 ~]# yum remove -y mariadb-libs
-- 清楚系统自带的mariadb数据库服务相关的程序包[rootdb01 ~]# yum install -y libaio-devel
-- 安装数据库服务程序所需的依赖软件包[rootdb01 ~]# ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5
或者
[rootdb01 ~]# yum install ncurses-compat-libs
-- 需要修改链接库信息只有centos 8 系统才需要进行操作修改# 数据库服务程序详细安装过程
[rootdb01 ~]# cd /usr/local/
[rootdb01 local]# rz -y
-- 上传数据库程序软件包
[rootdb01 local]# tar xf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
-- 解压数据库服务软件程序压缩包
[rootdb01 local]# ln -s mysql-8.0.26-linux-glibc2.12-x86_64 mysql
-- 创建数据库服务程序目录的软链接
[rootdb01 local]# tail -1 /etc/profile
export PATH/usr/local/mysql/bin:$PATH
[rootdb01 local]# source /etc/profile
-- 配置数据库服务程序环境变量
[rootdb01 local]# mysql -V
mysql Ver 8.0.26 for Linux on x86_64 (MySQL Community Server - GPL)
-- 可以获取数据库服务版本信息表示环境变量配置生效03 初始化数据库
[rootdb01 local]# useradd mysql
-- 创建数据库服务管理用户信息
[rootdb01 local]# mkdir -p /data/3306/data /data/3306/logs
[rootdb01 local]# chown -R mysql. /data/
-- 创建数据库服务相关目录并进行目录信息进行授权进行初始MySQL数据库服务操作8.0版本数据库
数据库初始化命令应用解读
核心程序命令初始化核心参数不安全初始化数据管理用户核心程序路径数据存放目录mysqld–initialize-insecure–usermysql–basedir/usr/local/mysql–datadir/data/3306/data
[rootlocalhost ~]# mysqld --initialize-insecure --usermysql --basedir/usr/local/mysql --datadir/data/3306/data
2024-04-09T21:25:07.719121Z 0 [System] [MY-013169] [Server] /usr/local/mysql-8.0.26-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.26) initializing of server in progress as process 1766
2024-04-09T21:25:07.739528Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-04-09T21:25:08.715486Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-04-09T21:25:09.521768Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1 is enabled for channel mysql_main
2024-04-09T21:25:09.522084Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1.1 is enabled for channel mysql_main
2024-04-09T21:25:09.548104Z 6 [Warning] [MY-010453] [Server] rootlocalhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
PS只要初始化没有报错就是成功的
编写生成MySQL数据库配置文件
[rootdb01 ~]# cat /etc/my.cnf eof
[mysql]
socket/tmp/mysql.sock
[mysqld]
usermysql
basedir/usr/local/mysql
datadir/data/3306/data
socket/tmp/mysql.sock
eof
-- 创建数据库服务运行需要加载的my.cnf配置模板文件启动运行MySQL数据库服务脚本
# 查看数据库服务默认启动脚本文件
[rootdb01 ~]# ls -l /usr/local/mysql/support-files/mysql.server
-rwxr-xr-x 1 7161 31415 10576 7月 1 2021 /usr/local/mysql/support-files/mysql.server
-- 数据库服务默认的启动脚本文件# 设置数据库服务程序启动运行文件
[rootdb01 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld# 启动数据库服务程序利用脚本文件
[rootdb01 ~]# /etc/init.d/mysqld start
[rootdb01 ~]# service mysqld start
Starting MySQL.Logging to /data/3306/data/db01.err.
.. SUCCESS!
[rootdb01 ~]# service mysqld stop
Shutting down MySQL.. SUCCESS!
-- 启动和停止数据库服务均成功
[rootdb01 ~]# chkconfig --add mysqld
-- 设置数据库服务开机自动运行# 启动数据库服务程序利用脚本文件 (systemd方式)
[rootdb01 ~]# systemctl enable mysqld
mysqld.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig mysqld on
-- 将service管理服务方式转换为systemd管理服务方式
[rootxiaoQ-01 ~]# systemctl start mysqld
[rootxiaoQ-01 ~]# systemctl is-active mysqld
active# 检查确认数据库服务是否启动成功
[rootxiaoQ-01 ~]# netstat -lntup|grep 3306
tcp6 0 0 :::33060 :::* LISTEN 67809/mysqld
tcp6 0 0 :::3306 :::* LISTEN 67809/mysqld
[rootxiaoQ-01 ~]# ps -ef|grep mysql
root 67663 1 0 01:04 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir/data/3306/data --pid-file/data/3306/data/xiaoQ-01.edu.pid
mysql 67809 67663 0 01:04 pts/0 00:00:01 /usr/local/mysql/bin/mysqld --basedir/usr/local/mysql --datadir/data/3306/data --plugin-dir/usr/local/mysql/lib/plugin --usermysql --log-errorxiaoQ-01.edu.err --pid-file/data/3306/data/xiaoQ-01.edu.pid --socket/tmp/mysql.sock特殊说明在启动mysql数据库服务时可能看到33060端口信息此端口信息主要实现mysqlx协议的通讯过程
利用mysqlx协议可以实现利用mysql-shell功能组件对数据进行key-value操作即识别json文件信息进行远程管理 Port 3306 is the default port for the MySQL Protocol, which is used by the mysql client, MySQL Connectors, and utilities such as mysqldump and mysqlpump. Port 33060 is the default port for the MySQL Database Extended Interface (the MySQL X Protocol). The X Plugin can be disabled at startup by either setting mysqlx0 in your MySQL configuration file, or by passing in either --mysqlx0 or --skip-mysqlx when starting the MySQL server. Alternatively, use the -DWITH_MYSQLXOFF CMake option to compile MySQL Server without X Plugin. 参考链接https://blog.csdn.net/michaelwoshi/article/details/107955539 数据库初始化过程完毕
间接加载
[rootlocalhost ~]# systemctl enable mysqld
mysqld.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig mysqld on
[rootlocalhost ~]# systemctl start mysqld
[rootlocalhost ~]# systemctl status mysqld
● mysqld.service - LSB: start and stop MySQLLoaded: loaded (/etc/rc.d/init.d/mysqld; bad; vendor preset: disabled)Active: active (running) since Wed 2024-04-10 05:45:54 CST; 1s agoDocs: man:systemd-sysv-generator(8)Process: 2323 ExecStart/etc/rc.d/init.d/mysqld start (codeexited, status0/SUCCESS)CGroup: /system.slice/mysqld.service├─2334 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir/data/3306/data --pid-fi...└─2487 /usr/local/mysql/bin/mysqld --basedir/usr/local/mysql --datadir/data/3306...Apr 10 05:45:53 localhost.localdomain systemd[1]: Starting LSB: start and stop MySQL...
Apr 10 05:45:54 localhost.localdomain mysqld[2323]: Starting MySQL. SUCCESS!
Apr 10 05:45:54 localhost.localdomain systemd[1]: Started LSB: start and stop MySQL.登录管理MySQL数据库服务程序
[rootdb01 ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.26 MySQL Community Server - GPLCopyright (c) 2000, 2021, 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.mysqlMySQL数据库部署参考链接https://www.cnblogs.com/oldboy666/p/15559963.html
实现数据库开机脚本自动运行
[rootlocalhost ~]# chkconfig --add mysqld
[rootlocalhost ~]# chkconfig --listNote: This output shows SysV services only and does not include nativesystemd services. SysV configuration data might be overridden by nativesystemd configuration.If you want to list systemd services use systemctl list-unit-files.To see services enabled on particular target usesystemctl list-dependencies [target].mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off[rootlocalhost ~]# /etc/init.d/mysqld start 放在 /etc/rc.local中3、数据库服务初始化介绍
8.0 5.7 数据库初始化操作
3.1 安全模式初始化
mysqld --initialize – 可以利用随机密码登录 临时密码 具有四种密码复杂度 12位 rWjgD;Qdg2e9
说明临时密码只能用户临时登录数据库登录完毕需要重置密码才能对数据库进行管理
[rootdb01 ~]# mysqld --initialize --usermysql --basedir/usr/local/mysql --datadir/data/3306/data
2024-07-24T08:52:00.526156Z 0 [System] [MY-013169] [Server] /usr/local/mysql-8.0.26-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.26) initializing of server in progress as process 3151
2024-07-24T08:52:00.586830Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-07-24T08:52:01.124556Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-07-24T08:52:01.879799Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1 is enabled for channel mysql_main
2024-07-24T08:52:01.880322Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1.1 is enabled for channel mysql_main
2024-07-24T08:52:01.970658Z 6 [Note] [MY-010454] [Server] A temporary password is generated for rootlocalhost: rWjgD;Qdg2e9
[rootdb01 ~]# /etc/init.d/mysqld start
Starting MySQL.Logging to /data/3306/data/db01.err.SUCCESS!
[rootdb01 ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.26Copyright (c) 2000, 2021, 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 mysql alter user rootlocalhost identified by 123456;
Query OK, 0 rows affected (0.01 sec)
-- 修改临时密码 3.2 非安全模式初始化
mysqld --initialize-insecure – 可以免密登录
5.5 5.6 数据库初始化操作
[rootlocalhost ~]# ./mysql56/scripts/mysql_install_db --usermysql --basedir/usr/local/mysql56 --datadir/data/3356/data
....
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your systemPLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:/usr/local/mysql56/bin/mysqladmin -u root password new-password/usr/local/mysql56/bin/mysqladmin -u root -h db01 password new-passwordAlternatively you can run:/usr/local/mysql56/bin/mysql_secure_installationwhich will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.See the manual for more instructions.You can start the MySQL daemon with:cd . ; /usr/local/mysql56/bin/mysqld_safe You can test the MySQL daemon with mysql-test-run.plcd mysql-test ; perl mysql-test-run.plPlease report any problems at http://bugs.mysql.com/The latest information about MySQL is available on the web athttp://www.mysql.comSupport MySQL by buying support/licenses at http://shop.mysql.comNew default config file was created as /usr/local/mysql56/my.cnf and
will be used by default by the server when you start it.
You may edit this file to change server settingsPS确实是否会显示两个OK 表示初始化成功 3.3 知识点补充非安全模式设置管理员密码
3.3.1 设置密码方式一没有密码设置密码
在命令行设置
mysqladmin password oldboy123
or
mysqladmin -uroot -p password oldboy123在数据库中设置密码SQL语句
alter user rootlocalhost identified by 123456;3.3.2 设置密码方法二修改密码信息
在命令行设置
mysqladmin -uroot -poldboy123 password 123456在数据库中设置密码SQL语句
mysql alter user rootlocalhost identified by 123456;
-- 8.0 利用SQL语句设置用户密码mysql update mysql.user set authentication_stringPASSWORD(oldboy123) where userroot and hostlocalhost;
-- 5.7 利用SQL语句设置用户密码mysql set password for oldboylocalhostPASSWORD(oldboy123);
-- 5.6 利用SQL语句设置用户密码3.3.3 设置密码方法三忘记密码进行密码重置 作业
01 如何编写MySQL的systemctl启动文件
4、数据库服务用户管理
学习数据库用户管理知识原因
用户登录数据库服务系统中实现数据库服务登录用户管理数据库服务中对象实现数据库对象管理
4.1 创建用户 useradd create
创建用户格式用户名称信息白名单信息
用户名称创建用户名字
白名单信息主机域信息本地-localhost/127.0.0.1:
-- 只允许本地连接登录数据库网段-10.0.0.0/24 10.% 172.16.% 182.168.10.%
-- 允许某个网段中的多个主机均可远程登录地址-192.168.10.13
-- 只允许某个主机可以远程登录域名-oldboyedu
-- 允许某个主机可以远程登录域名解析
-- 允许远程登录数据库create user oldboy10.0.0.% identified by 123;# 方式一书写方法企业常用
root192.168.30.0/24
root192.168.30.0/255.255.255.0
-- 授权一个网段主机均可远程登录数据库服务表示这个网段中192.168.30.1~192.168.30.254均可访问
-- 在数据库中识别默认掩码就是/24其他掩码信息需要具体写明需要注意特殊VLSM子网掩码需要长格式指明不能简写***# 方式二书写方法企业常用
root192.168.30.%
-- 授权一个网段主机均可远程登录数据库服务表示这个网段中192.168.30.1~192.168.30.254均可访问# 方式三书写方法
root172.16.%
-- 授权一个更大网段主机均可远程登录数据库服务表示这个网段中192.168.0.1~192.168.255.254均可访问# 方式四书写方法
root%
-- 授权任意主机都可以远程登录数据库服务# 方式五书写方法
root192.168.30.51 1-254
-- 授权一个具体的主机可以远程登录数据库服务表示这个主机192.168.30.51可以访问
root192.168.30.5%
-- 授权多个具体的主机可以远程登录数据库服务表示多个主机192.168.30.50~192.168.30.59均可以访问解决数据库加密问题客户端 – 服务端 方法一升级客户端 客户端加密方式升级 方法二降级服务端 服务端加密方式降级 查看8.0数据库 密码加密方式 show variables like ‘%auth%’; 早期默认加密方式mysql_native_password 目前最新加密方式caching_sha2_password
# 降级方式一
create user oldgirllocalhost identified with mysql_native_password by 123;
# 降级方式二
alter user oldboy10.0.0.% identified with mysql_native_password by 123;
# 降级方式三全局修改
vim /etc/my.cnf
[mysqld]
default_authentication_pluginmysql_native_password# 重启数据库服务使配置生效
# 检查确认
mysql show variables like %auth%;
----------------------------------------------------------------------
| Variable_name | Value |
----------------------------------------------------------------------
| default_authentication_plugin | mysql_native_password |
----------------------------------------------------------------------
1 row in set (0.01 sec)查看数据库用户密码信息
select user,host,authentication_string,plugin from mysql.user;4.2 查看用户 id select
# 查看数据库所有用户信息
select user,host from mysql.user;# 查看当前登录系统的用户信息
select user();4.3 删除用户 userdel drop
# 方式一drop
drop user oldbaby10.0.0.%;# 方式二delete 危险--有可能将全部用户删除
delete from mysql.user where useroldboy and host10.0.0.%;# 企业里尽量不要删除用户锁定用户禁用
mysql alter user oldgirllocalhost account lock; # 锁定
mysql alter user oldgirllocalhost account unlock; # 解锁4.4 修改用户 usermod alter
# 修改用户密码
alter user oldboy10.0.0.% identified with mysql_native_password by 123456;补充8.0版本与之前数据库版本 用户管理区别 区别一数据库密码加密方式不同 8.0 caching_sha2_password 之前版本 mysql_native_password 区别二新版数据库不能在授权时创建用户
# 之前数据库版本
grant all on *.* to oldgirllocalhost identified by 123
-- 一条命令完成了用户创建并授权操作
show grants for oldgirllocalhost;
select * from mysql.user\G# 目前数据库版本
mysql grant all on *.* to oldboylocalhost identified by 123;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near identified by 123 at line 1
# 8.0版本有密码按上键调取不出来
create user oldboylocalhost identified by 123;
grant all on *.* to oldboylocalhost;5、数据库服务授权管理
授权管理作用安全 区别用户能力
数据库中有什么权限
show privileges; —查看所有权限信息
第一列Privilege —所有权限信息
第二列Context —权限操作对象
第三列Comment —权限解释说明
常用权限信息参考截图
核心重要授权权限总结
序号权限授权资源解释说明01SelectTables可以对表进行操作查询表中数据信息02InsertTables可以对表进行操作插入表中数据信息03UpdateTables可以对表进行操作修改表中数据信息04DeleteTables可以对表进行操作删除表中数据信息05AlterTables可以对表进行操作修改表中结构信息元数据-属性06IndexTables可以对表进行操作删除或创建表中的索引信息07CreateDatabases,Tables可以对表和库进行操作用于创建数据库和表信息08DropDatabases,Tables可以对表和库进行操作用于删除数据库和表信息 说明all privilegesall包含查看的所有权限信息但是唯独缺了Grant option不能授权用户此权限只能给rootlocal用户 PS赋予用户所有权限allall privileges表示所有权限但一个权限不会赋予Grant priv
To give to other users those privileges you possess 不允许给其他用户授权
皇帝–年羹尧(荣耀)–授权能力 玉玺
当创建出一个用户时如果没有授权也会有一个默认权限
mysql create user oldboy10.0.0.% identified by 123;
Query OK, 0 rows affected (0.00 sec)mysql show grants for oldboy10.0.0.%;
-------------------------------------------
| Grants for oldboy10.0.0.% |
-------------------------------------------
| GRANT USAGE ON *.* TO oldboy10.0.0.% |
-------------------------------------------
1 row in set (0.00 sec)
USAGE: No privileges - allow connect only -- 创建用户之后默认权限只允许用户登录数据库
如何设置权限授权 MySOL grant all on 授权对象范围 to 权限赋予用户信息
MySQL grant all on * . * to blog192.168.30.%;
授权 权限 库信息 表信息 用户 主机域 一般程序中需要授权程序连接用户有select insert update delete 博文–uri–数据库 blog.oldboy.com/xxxid02
如何回收权限取消权限
mysql revoke delete on *.* from oldbaby‘192.168.30.%’;
回收权限
mysql grant select,insert,update,delete on *.* to oldboy10.0.0.%;
Query OK, 0 rows affected (0.01 sec)
-- 创建授权mysql show grants for oldboy10.0.0.%;
--------------------------------------------------------------------
| Grants for oldboy10.0.0.% |
--------------------------------------------------------------------
| GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO oldboy10.0.0.% |
--------------------------------------------------------------------
1 row in set (0.00 sec)
-- 数据库服务用户权限授权成功mysql revoke delete on *.* from oldboy10.0.0.%;
Query OK, 0 rows affected (0.00 sec)
-- 数据库服务用户回收权限mysql show grants for oldboy10.0.0.%;
-----------------------------------------------------------------
| Grants for oldbaby10.0.0.% |
-----------------------------------------------------------------
| GRANT SELECT, INSERT, UPDATE ON *.* TO oldboy10.0.0.% |
-----------------------------------------------------------------
1 row in set (0.00 sec)
-- 数据库服务用户权限回收成功6、数据库服务授权表介绍
授权表有什么用可以核实用户身份做验证可以核实用户权限 随便登录
常见的授权表信息说明
序号授权表名称解释说明01user主要用于存储用户、主机域、密码、加密插件等信息同时还存储了*.*级别的权限(全局权限)02db主要用于存储用户、主机域等信息同时还存储了单库级别的权限(局部权限)03tables_priv主要用于存储用户、主机域等信息同时还存储了单表级别的权限(局部权限) 说明以上授权表信息了解作用即可不建议采用手工方式对授权表中的数据进行修改调整 知识点补充8.0版本新的权限管理功能 权限角色管理 将相同权限的用户整合为一个组 系统用户组
之前的版本在设置权限信息时只能针对用户设置权限
www数据库 oldboy-增删改查.其它管理权限 oldgirl-增删改查.其它管理权限 oldbaby-增删改查.其它管理权限
创建角色信息
CREATE ROLE admin, developer;
CREATE ROLE webapplocalhost;6.1 设置角色功能实践
00 创建管理数据库信息
create database oldboy;01 创建出角色组信息
create role oldboy_rw,oldboy_r;02 设置角色的权限
mysql grant select on oldboy.* to oldboy_r;
mysql grant select,update,insert,delete on oldboy.* to oldboy_rw;mysql show grants for oldboy_r;
----------------------------------------------
| Grants for oldboy_r% |
----------------------------------------------
| GRANT USAGE ON *.* TO oldboy_r% |
| GRANT SELECT ON oldboy.* TO oldboy_r% |
----------------------------------------------
2 rows in set (0.00 sec)
mysql show grants for oldboy_rw;
-----------------------------------------------------------------------
| Grants for oldboy_rw% |
-----------------------------------------------------------------------
| GRANT USAGE ON *.* TO oldboy_rw% |
| GRANT SELECT, INSERT, UPDATE, DELETE ON oldboy.* TO oldboy_rw% |
-----------------------------------------------------------------------
2 rows in set (0.00 sec)03 创建用户信息
create user user01% identified by 123;
create user user02% identified by 123;04 实现用户与角色关联
grant oldboy_r to user01%;
grant oldboy_rw to user02%;05 激活角色功能
方式一手动激活角色
set default role all to user01%;
set default role all to user02%;
-- 用管理员登录数据库激活角色功能select current_role();
-- 相应用户登录数据库查看确认角色功能是否激活有角色信息方式二实现自动激活用户角色信息
set global activate_all_roles_on_loginon;
-- 临时配置也可以将配置参数写入到配置文件中实现永久配置
具体操作演示过程
# 指定用户操作特定数据库时具有共性相同的权限分为运维权限rw 分为开发权限ro
mysqlhelp create role;
-- 查看role创建的方法# 创建指定的role信息
CREATE ROLE admin, developer;
CREATE ROLE webapplocalhost;
-- 创建role信息的语句结构信息不加信息表示角色白名单为%方式实际还要根据具体用户定义mysql create role oldboy_rw,oldboy_r;
-- 创建两个不同的role信息
-- oldboy_rw: oldboy.* rw(select,update,insert,delete)
-- oldboy_r: oldboy.* r(select) # 进行role权限信息设定
mysql grant select on oldboy.* to oldboy_r;
Query OK, 0 rows affected (0.00 sec)mysql grant select,update,insert,delete on oldboy.* to oldboy_rw;
Query OK, 0 rows affected (0.00 sec)# 将指定role信息与相应的用户信息进行捆绑
mysql create user user01% identified by 123;
Query OK, 0 rows affected (0.00 sec)mysql create user user02% identified by 123;
Query OK, 0 rows affected (0.00 sec)
-- 创建需要捆绑role权限的用户信息mysql grant oldboy_r to user01%;
Query OK, 0 rows affected (0.00 sec)mysql grant oldboy_rw to user02%;
Query OK, 0 rows affected (0.00 sec)
-- 实现不同的role信息与不同的用户进行捆绑# 进行角色信息激活
# 方式一手动激活角色
mysql SET DEFAULT ROLE ALL TO lei_testlocalhost;
mysql set default role all to user01%;
mysql set default role all to user02%;
-- 利用数据库管理员账号手工激活角色mysql select current_role();
----------------
| current_role() |
----------------
| oldboy_r% |
----------------
1 row in set (0.00 sec)
-- user01登录数据库会显示对应激活的角色信息mysql select current_role();
----------------
| current_role() |
----------------
| oldboy_rw% |
----------------
1 row in set (0.00 sec)
-- user02登录数据库会显示对应激活的角色信息#方式二实现自动激活用户角色信息
mysql select activate_all_roles_on_login;
-------------------------------
| activate_all_roles_on_login |
-------------------------------
| 0 |
-------------------------------
1 row in set (0.00 sec)mysql set global activate_all_roles_on_loginon;
Query OK, 0 rows affected (0.00 sec)mysql select activate_all_roles_on_login;
-------------------------------
| activate_all_roles_on_login |
-------------------------------
| 1 |
-------------------------------
1 row in set (0.00 sec)[rootdb-01 ~]# mysql -uuser01 -p123 -h10.0.0.51
mysql select current_role();
----------------
| current_role() |
----------------
| oldboy_r% |
----------------
1 row in set (0.00 sec)
-- user01登录数据库会显示对应激活的角色信息[rootdb-01 ~]# mysql -uuser02 -p123 -h10.0.0.51
mysql select current_role();
-----------------
| current_role() |
-----------------
| oldboy_rw% |
-----------------
1 row in set (0.01 sec)
-- user02登录数据库会显示对应激活的角色信息# 进行用户操作验证
mysql select * from oldboy.t1;
----------
| name |
----------
| zhangsan |
| lisi |
----------
2 rows in set (0.04 sec)
mysql insert into oldboy.t1 values (xiaoQ);
ERROR 1142 (42000): INSERT command denied to user user0110.0.0.51 for table t1
-- user01只读用户登录数据库只能查看操作不能进行其他操作mysql select * from oldboy.t1;
--------
| name |
--------
| oldboy |
| lisi |
--------
2 rows in set (0.00 sec)
mysql insert into oldboy.t1 values (xiaoQ);
-- user02读写用户登录数据库可以进行其他操作任务7、数据库服务密码重置实践
忘记密码如何登录数据库root用户密码忘记
1关闭数据库服务 systemctl stop mysqld2采用跳过授权表登录数据库
mysqld_safe --skip-grant-tables --skip-networking
-- skip-grant-tables 表示忽略授权表启动
-- skip-networking 忽略网络通讯方式启动# 进行测试服务是否启动
[rootoldboy ~]# ps -ef|grep mysql3进入数据库修改重置密码
mysql alter user rootlocalhost identified by 123;
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql flush privileges; -- 可以实现将内存信息同步到磁盘 实现磁盘数据加载到内存
-- 将授权表加载到内存中
-- 表示先将数据库服务授权表加载到内存中也可以将内存中修改的授权信息存入到磁盘中
mysql alter user rootlocalhost identified by 123;
-- 修改数据库服务用户密码信息4退出数据库并关闭服务
mysql shutdown;
Query OK, 0 rows affected (0.01 sec)mysql 2024-04-14T10:12:41.461824Z mysqld_safe mysqld from pid file /data/3306/data/db01.pid ended
mysql quit
Bye
[1] Done mysqld_safe --skip-grant-tables --skip-networking# 重启
[rootdb01 ~]# systemctl start mysql5测试密码信息
[rootdb01 ~]# mysql -uroot -p123
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.26 MySQL Community Server - GPLCopyright (c) 2000, 2021, 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 08、数据库服务连接管理 09、数据库服务应用配置 10、数据库服务多实例构建