数据库基础知识
2021-03-01 22:01:24 33 举报
AI智能生成
123
作者其他创作
大纲/内容
分支主题
数据库基础知识
1、数据库介绍与安装
1、数据库行业发展
传统行业 RDBMS: Oracle MSSQL DB2
互联网大潮 RDBMS+NOSQL: 开源MySQL PG+ Redis Mongo DB
大数据 NewSQL: PolarDB spanner 分布式产品
HATP:OLTP+OLAP真正实现:TIDB
参考网站:https://db-engines.com/en/
2、msyql介绍
2.1 Mysql(Oracle)企业版本选择
5.6版本:2021年2月份停止更新,即将退出舞台
5.7版本:5.7.31+
8.0: 8.0.20+
面试考题:你们公司用什么MYSQL版本
核心系统:5731
边缘系统:8020
2.2 软件获取
www.mysql.com-->downloads-->社区版-->linux-Generic(解压即用包)/Source Code(源码)
2.3 同源替代产品
mariadb 10+
Percona 5.7+ 8.0
云产品 AISQL TDSQL
3、mysql二进制版本安装
第一步:准备一台虚拟机
第二步:上传软件并解压
1、cd /opt
2、上传8.0压缩包
3、tar xf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
第三步: 创建软链接到/usr/local/mysql
ln -s /opt/mysql-8.0.20-linux-glibc2.12-x86_64 /usr/local/mysql
第四步: 创建mysql虚拟用户
1、groupadd msyql -g27
2、useradd mysql -u25 -g27 -M -s /sbin/nologin
第五步:创建目录并修改属主属组
1、 mkdir -p /data/3306/data
2、 chown -R mysql.mysql /data
第六步:清理环境
1、rpm -qa|grep mariadb
2、yum remove mariadb -y
3、yum remove mariadb-libs -y(卸载残余依赖包)
4、ls /etc/my.*
第七步:初始化数据库
1、添加环境变量: echo 'export PATH=/usr/local/mysql/bin:$PATH' >>/etc/profile
2、加载环境变量: source /etc/profile
3、数据库初始化:mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data
PS:报错-
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决方法:下载mysql依赖
yum install -y libaio-devel
第八步:编写配置文件
vim /etc/my.cnf
[mysqld]user=mysql basedir=/usr/local/mysql datadir=/data/3306/data socket=/tmp/mysql.sock port=3306 [mysql]socket=/tmp/mysql.sock
第九步:启动数据服务
1、绝对路径启动数据库
cd /usr/local/mysql/supprot-files/
./mysql.server start
2、service管理
cp /usr/local/msyql/support-files/msyql.server /etc/init.d/mysqld
service mysqld restart
3、systemctl 管理
systemctl enable msyqld
4、msyql 进入数据库
PS:
a - 不同版本初始化的区别
5.7版本之前
/usr/local/maysql/scripts/mysql_install_db --user=msyql --basedir=软件安装路径 --datadir=数据目录
5.7版本之后
msyqld --initialize--insecure --user=msyql --basedir=软件路径 --datadir=数据路径
b-初始化参数说明
--initialize
会生成12位的随机临时密码(管理员用户),四种密码复杂度。临时生的密码,只可以用来登录。不能用来管理数据库。第一次登录是将他重置
错误:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement
解决方法:设置密码
mysql> alter user root@'localhost' identified by '123';
2、数据库基础管理
1、用户管理
用户的作用
1、登录数据库
2、管路数据库对象(库、表等)
如何表示
格式:用户@'白名单'
白名单:允许ip的列表
oldguo@'localhost' 允许oldguo用户本地登录oldguo@'10.0.0.2' 允许10.0.0.2主机登录oldguo@'10.0.0.%' 允许10.0.0.0网段所有主机登录oldguo@'10.0.0.5%' 允许10.0.0.50~59登录oldguo@'%' 允许所有主机登录oldguo@'10.0.0.0/255.255.254.0' 允许10.0.0.0网段所有主机登录
用户的增删改查
查
5.7 版本之前
5.7 版本之后
增
创建用户:create user oldguo@'10.0.0.%';
创建用户并设置密码:create user oldguo@'localhost' identified by '123';
PS: 8.0版本之后更改了加密插件
8.0 之前
mysql_native_password
8.0 之后
caching_sha2_password
改
修改用户密码信息
alter user oldguo@'localhost' identified with mysql_native_password by '123';
锁定用户,被锁定用户不能够登录
alter user oldguo@'10.0.0.%' account lock;
解除用户的锁定状态
alter user oldguo@'10.0.0.%' account unlock;
删
删除用户
drop suer oldguo@'10.0.0.%';
问题一:管理员密码忘记或丢失,如何解决
第一步:停止数据库
systemctl stop mysql
第二步:使用维护模式启动数据库
mysqld_safe --skip-grant-tables --skip-networking &
第三步:无密码登录并修改密码
mysql
mysql> alter user root@'loclhost' identified by '123456';
报错: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 root@'localhost' identified by '123456';
第四步:重启数据库到正常模式
systemctl stop mysqld
systemctl start mysqld
问题二:基于mysql_native_password插件密码的暴力破解
第一步:找到密码文件
8.0 版本之前
使用 notepad++ 打开 /data/3306/data/msyql/user.myd -->mysql_native_passwd
8.0 版本之后
使用 notepad++ 打开 /data/3306/data/mysql.ibd -->mysql_native_passwd
第二步:使用密码字典破解密码
http://www.cmd5.com
2、权限管理
权限的作用
1、约束用户对某些对象做什么动作
2、MySQL 权限是用户的属性!!!用户一旦删除权限也跟着删除
pS:linux的权限是文件的属性,文件被删除权限就没了。
数据库的权限种类
mysql>show privileges; 查看所有的权限种类
用户的授权
格式:grant 权限 on 对象范围 to 用户;
权限
ALL:除grant option所有的权限的集合。一般是给管理员的
单个的权限:一般给业务用户
管理员用户:grant all on *.* to root#'localhost';
主从用户:create user repl@'10.0.0.%' identified with msyql_native_password by '123';grant replication slave on *.* to repl@'10.0.0.%';
对象范围:
*.*:数据库中的所有对象
wordpress.*: 单库下所有的表
wordpress.t1: 单个表
回收权限
mysql> revoke delete on *.* from app@'localhost';
格式:revoke 权限 on 对象范围 from 用户信息
授权表介绍
授权表会在启动数据库使自动加载到内存,起到验证的功能。
mysql>use msyql;mysql>show tables;
user :用户的所有信息+ *.* 级别的权限db :用户的部分信息+ wordpress.* 级别的权限tables_priv :用户的部分信息+ wordpress.t1 级别的权限
PS:8.0版本新特性
必须先健用户后授权,grant不再支持修改密码功能和自动建用户功能。
grant all on *.* to root@'%' identified by '123'; ---不再支持
3、连接管理
1、连接方式(Linux)
socket 本地Unix套接字文件连接 (localhost相关用户),每次启动会自动生成
TCP/IP 基于远程连接(远程客户端或者应用程序)
2、连接演示
socket=/tmp/msyql.sock 参数来决定socket位置,默认/tmp/mysql.sock连接前提:用户必须创建为localhost白名单msyql -uroot -p123456 -S /tmp/msyql.sock
TCP/IP
IP:连接前提:用户必须创建为远程地址白名单。create user root@'10.0.0.%' identified with msyql_native_password by '123';alter user root@'10.0.0.%' identified mysql_native_password by '123';msyql>grant all on *.* to root@'10.0.0.%';msyql -uroot -p123 -h 10.0.0.51 -P3306
3
0 条评论
回复 删除
下一页