linux学习之Mysql

本文介绍了MySQL中的两种主要存储引擎——MyISAM和InnoDB的特点,包括它们的表文件结构和锁机制。同时,讲解了事务的ACID特性、数据库管理系统的基本概念以及MySQL数据库的特点和应用场景。此外,还涉及了MySQL的授权管理、密码策略以及数据存储流程。
摘要由CSDN通过智能技术生成

存储引擎

1、mysiam
主要特点:不支持表级锁,不支持事务、事务回滚、外键
相关的表文件:表名.frm、表名.MYI、表名.MYD

2、InnoDB存储引擎
主要特点:支持行级锁,支持事务、事务回滚、外键
相关表文件:表名.frm、表名.ibd
ibdate1、ib_logfile0、ib_logfile1

MYSQL锁机制
锁粒度
表级锁:一次直接对整张表进行加锁
行级锁:只锁定一行
页级锁:对整个页面进行加锁

锁类型
读锁:支持并发读
写锁:独占锁,上锁期间线程不能读表或写表

事务特性(ACID)
1、原子性
事务整个操作就是一个整体,不可分割,要么全部成功,要么全部失败
2、一致性
事务操作前后,表中的记录没有变化
3、隔离性
事务操作是互相隔离不受影响的
4、持久性
数据一旦提交,不可改变,永久改变表数据

数据库(DB、DataBase)
–依照某种数据模型进行组织并存放到存储器的数据集合。

数据库管理系统(DBMS,DataBase Management System)
–用来操纵和管理数据库的大型服务软件

数据库系统(DBS,DataBase System)
–即DB+DBMS,指带有数据库并整合了数据库管理软件的计算机系统

MySQL数据库特点与应用
特点:
–适用于中小规模、关系型数据库系统
–支持Linux/Unix、Windows等多种操作系统
–使用C和C++编写,可移植性强
–通过API支持Python/Java/Perl/PHP等语言
典型应用环境:
–LAMP平台,与Apache HTTP Server组合
–LNMP平台,与Nginx组合

validate_password_policy策略

0或LOW只验证长度
1或MEDIUM(默认)长度;数字,小写/大写,和特殊字符
2或STRoNG长度;数字,小写/大写,和特殊字符

mysql服务相关参数

文件说明
/etc/my.cnf主配置文件
、var/lib/mysql数据库目录
默认端口号3306
进程名3306
传输协议TCP
进程所有者mysql
进程所属组mysql

客户端数据存储流程
1、连接数据库服务器
2、建库
3、建表
4、插入记录
5、断开连接

mysql命令
进入数据库:
mysql [-h 服务器 -u用户名 -p密码 数据库]
quit或exit退出

常用mysql管理环境命令
1、DDL数据定义语言(create、alter、drop)
2、DML数据操作语言(insert、update、delete)
3、DCL数据控制语言(grant、revoke)
4、DTL数据时无语言(commit、rollback、savepoint)

库管理命令

show databases;         #显示已有的库
use 库名;               #切换库
select database();      #显示当前所在的库
create database 库名;   #创建新库
show tables;            #显示当前库下的表
drop databases 库名;     #删除表

数据库的命名:
1、可以使用数字、字母、下划线,但不能纯数字
2、区分大小写,具有唯一性
3、不可使用指令关键字、特殊字符

表管理命令:

创建表:
create table 库名.表名(
   字段1  字段类型(宽度) 约束条件,
   字段n  字段类型(宽度) 约束条件,
   ……
   字段n  字段类型(宽度) 约束条件,
);
desc 表名;   #查看表结构
select * from 表名; #查看表记录
drop table 表名; #删除表
insert into 表名 values(值列表);
update 表名 set 字段=值;
delete from 表名;

常见的信息种类
1、数值型:体重、身高、成绩、工资
2、字符型:姓名、工作单位、通信住址
3、枚举型:兴趣爱好、性别
4、日期时间型:出行日期、注册时间

类型大小范围(有符号)范围(无符号)用途
TINYINT1字节·128~1270~255微小整数
SAMLLiNT2字节·32768~327670~65535小整数
MEDIUMINT3字节·2^23~ 2^23-10~2^24-1中整数
INT4字节-2^31 ~2^31-10~2^32-1大整数
BIGINT8字节-2^63 ~2^63-10~2^64-1极大整数
FLOAT4字节·单精度浮点数
DOUBLE8字节双精度浮点数
DECIMAL

安装MySQL
1、下载RPM包
官网:https://dev.mysql.com/downloads/mysql/
选择适用于当前系统的bundle集合包
mysql-community-client //客户端应用程序
mysql-community-common //数据库和客户端共享文件
mysql-community-devel //客户端应用程序的库和头文件
mysql-community-embedded //嵌入式函数库
mysql-community-embedded-compat //嵌入式兼容数据库
mysql-community-embedded-devel //头文件和库文件作为MySQL的嵌入式数据库文件
mysql-community-libs //MySQL数据库客户端应用程序的共享库
mysql-community-libs-compat //客户端应用程序的共享兼容库

2、准备环境
删除/etc/my,cnf有mariadb的停止mariadb服务

systemctl stop mariadb                  #停止mariadb服务
rm -rf /etc/my.cnf                      #删除文件
rm -rf /var/lib/mysql/*                 #删除数据
rpm -e --nodeps mariadb-server mariadb  #卸载mariadb

3、安装软件包
首先安装依赖包

yum -y install perl-Data-Dumper perl-JSON perl-Time-HiRes

mysql包内容:
./mysql-community-client-5.7.17-1.el7.x86_64.rpm
./mysql-community-common-5.7.17-1.el7.x86_64.rpm
./mysql-community-devel-5.7.17-1.el7.x86_64.rpm
./mysql-community-embedded-5.7.17-1.el7.x86_64.rpm
./mysql-community-embedded-compat-5.7.17-1.el7.x86_64.rpm
./mysql-community-embedded-devel-5.7.17-1.el7.x86_64.rpm
./mysql-community-libs-5.7.17-1.el7.x86_64.rpm
./mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm
./mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64.rpm
./mysql-community-server-5.7.17-1.el7.x86_64.rpm
./mysql-community-test-5.7.17-1.el7.x86_64.rpm
安装软件包

rpm -Uvh mysql-community-*.rpm

或者将其打包成yum源

createrepo .

4、启动服务并初始化配置

systemctl start mysqld
grep 'temporary password'  /var/log/mysqld.log #初始密码在mysqld.log下
mysql -uroot -p'初始密码'   #用初始密码登录

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 11
Server version: 5.7.17
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
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>                                     //登录成功后,进入SQL操作环境

mysql> show databases;       #需要修改密码,不然无法使用
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.   

修改密码
密码的复杂度与validate_password_policy的值有关,默认为1,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。如果我们不希望密码设置的那么复杂,需要修改两个全局参数:validate_password_policy与validate_password_length、validate_password_length默认值为8,最小值为4,如果你显性指定validate_password_length的值小于4,尽管不会报错,但validate_password_length的值将设为4。

mysql>set global validate_password_policy=0;      //只验证长度
Query OK, 0 rows affected (0.00 sec)
mysql>set global validate_password_length=6;    //修改密码长度,默认值是8个字符 
Query OK, 0 rows affected (0.00 sec)
mysql> alter user user() identified by "123456";  //修改登陆密码
Query OK, 0 rows affected (0.00 sec)

5.7版本可以用,更高的版本有些不同如
mysql>set global validate_password.policy=0;      //不是_policy,而是.
Query OK, 0 rows affected (0.00 sec)
mysql>set global validate_password.length=6;     //.length 
Query OK, 0 rows affected (0.00 sec)
修改密码不能使用set password=password('1234');
要用alter 指令
创建授权

mysql授权库和表信息

  • user表,存储授权用户的访问权限
  • db表,存储授权用户对数据库的访问权限
  • tables_priv表,存储授权用户对表的访问权限
  • columns_priv表,存储授权用户对字段的访问权限

基本用法
grant 权限列表 on 库名.表名 to@‘客户端地址’ identified by ‘密码’ [with grant option]; 【with grant option】是否有授权权限

//*.*代表所有库所有表
//授权设置存放在mysql库的user表

权限列表

  • all:匹配所有权限
  • select ,update,insert……
  • select,update(字段1,,,,字段n)

客户端地址

  • %:匹配所有主机
  • 192.168.4.%:匹配一个网段

撤销用户权限

  • revoke 权限列表 on 库名.表名 from 用户名@‘客户端地址’;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值