当前位置:Gxlcms > 数据库问题 > MySQL入门(一)

MySQL入门(一)

时间:2021-07-01 10:21:17 帮助过:7人阅读

??? ?
一、基础架构
1.数据库系统:(通用模型)?? ?
?技术分享图片??
分析器:分析sql语句,命令,语法,库名,字段名,表名等
操作求解器:操作过程应该怎样执行,可能会提供多条执行路径
计划执行器:选择最优执行路径,
锁管理器是事务管理器的一个基本组件
?? ?
文件存取方法?? ?//r或w
缓冲区管理方法? //
磁盘空间管理器?? ? //限定表或者库占用空间大小
事务管理器?? ??? ?//
恢复管理器?? ??? ?//恢复此前未执行完成的事务
?? ?
2.事务概念?? ?
事务(transaction):组织多个操作为一个整体,要么全部执行,要么全部都不执行
?? ?回滚:rollback,假如未执行完成,所有的都要回滚
?? ?
?? ?Bos:8000-1000
?? ?Alice:5000,5000+1000
?? ?一个存储系统是否支持事务:测试标准
?? ?ACID:
?? ??? ?A:原子性,不可分割的一个整体
?? ??? ?C:一致性,前后的总和是一致的,变化前后是一致的
?? ??? ?I:隔离性,事务彼此之间是隔离的,我在取钱的时候,其他人不能操作该账户
?? ??? ?D:持久性,事务执行成功,则保存在disk中,则不能修改
?? ?原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)?? ? ?
?? ?
二、数据库范式
数据库设计具有一定的规范性?? ??? ?
员工信息:
?? ?约束:外键约束,A表依赖于B表的某个字段
?? ?表达式约束:限定age范围为1-100
?? ?主键:唯一的标识身份
?? ?
RDBMS: //一般满足第三范式即可,范式是递进关系
?? ?1.第一范式1NF //列不可再分,列唯一
?? ??? ?每一列都是不可分割的原子数据,而不能是集合,属组等非原子数据项
?? ??? ?实体中有多个值时,必须拆分为不同的属性,即无重复的域
?? ??? ?关系模式中,每个属性不可再分。属性原子性
?? ??? ?
?? ??? ?职工号,姓名,电话号码组成一个表(一个人可能有多个电话号码)
?? ??? ?方案1:重复存储职工号和姓名。这样,关键字只能是电话号码。//不满足
?? ??? ?方案2:二是职工号为关键字,电话号码分为单位电话和住宅电话两个属性 ?? ??? ??? ?
?? ?2.第二范式2NF//
?? ??? ?在一范式的基础上,非主属性完全依赖于主属性,即消除非主属性对主属性的部分函数依赖关系。
?? ??? ?sc(sid,cid,grade,credit)其中sid为学号, cid为课程号,grade为成绩,credit为学分。 由以上条件,关键字为组合关键字(sid,cid)
?? ??? ?sc(sid,cid,grade,credit)//非关键字属性credit仅函数依赖于cid,也就是credit部分依赖组合关键字(sid,cid)而不是完全依赖。
?? ??? ?必须拆分为:sc(sid,cid,grade),c(cid,credit)?? ?
?? ??? ?
?? ?3.第三范式3NF //
?? ??? ?二的基础上,非主属性对主属性不存在传递函数依赖关系。
?? ??? ?s(sid,sname,did,dname,location) 各属性分别代表学号,姓名,所在系,系名称,系地址。
?? ??? ?问题:did,dname,location将重复存储
?? ??? ?原因:关系中存在传递依赖造成的。即sid -> did。而did ->sid却不存在,did -> location, 因此关键字sid对location函数决定是通过传递依赖did->location 实现的。也就是说,sid不直接决定非主属性location。
?? ??? ?方法:分为两个关系 s(sid,sname,did),d(dno,dname,location)
?? ??? ?注意:关系s中必须有外关键字did。否则两个关系之间失去联系。
?? ??? ?
?? ?4.第五范式,巴斯特科范式
?? ??? ?http://www.cnblogs.com/hi-bazinga/archive/2012/06/05/2536806.html
?? ?
三、数据库其他概念
数据库:数据的集合
????表:为了满足范式设计要求,将一个数据集拆分为多个
????约束:constraint,向数据表插入要遵循的限制规则
????????主键:一个或多个字段的组合,主键的数据必须唯一,不能重复
????????外键:A表某字段能插入的数据依赖于B表的主键中的数据
????????唯一键:一个或多个字段的组合,填入唯一键中的约束,必须不同于已存在的数据,可以为空
????????检查性约束:取决于表达式的请求
????索引:将表中的某一个或某些字段抽取出来,单独存储为一个独特的数据结构;
????????索引是一个数据结构:
????????常见的索引类型:
????????????树状:
????????????hash:
????????目的:加快查找速度,但不利于w请求
????关系运算:
????????选择:选择符合条件的行
????????投影:选择符合条件的列
????????连接:将多张表关联起来
????????????左连接,右链接,笛卡尔积,内连接
????数据抽象:????
????????物理层:决定数据的存储格式,即如何将数据组织为物理文件
????????逻辑层:描述DB存储什么数据,以及数据间存在什么关系
????????视图层:描述DB中的部分数据;
????关系模型的分类:
????????一般关系模型:
????????实体关系模型:
????????基于对象的关系模型:
????????半结构化关系模型:??xml
Mariadb(Mysql)
?? ?Unireg:
?? ?MySQL AB--->公司,早期是针对Unireg做的应用接口,
?? ?卖给了Sun公司,早期是运行在Solaris:二进制版本,后来才在linux上
?? ?Sun被oracle收购了
?? ?My:作者的大女儿
?? ?Maria:作者的三女儿
mysql:www.mysql.com
Mariadb:wwww.mariadb.org
?? ?
四、安装MariaDB
Mariadb的特性:
?? ?插件式存储引擎,存储管理器有多种实现版本,用户可根据需要灵活选择?? ??? ?
?? ?存储引擎也称为“表类型"
?? ?1.更多的存储引擎 //show engines
?? ??? ?MyISAM?? ??? ?//5.1默认使用
?? ??? ?MyISAM-->Aria //
?? ??? ?InnoDB-->XtraDB //支持事务5.5以后
?? ?2.诸多扩展新特性:
?? ?3.提供了较多的测试组件
?? ?4.truly open source;真的开源
MySQl的发行机制
?? ?Enterprise:提供了更丰富的功能
?? ?Community:

安装方式:
?? ?1.rpm包
?? ??? ?1.由OS的发行商提供
?? ??? ?2.程序官方提供
?? ?2.源码包
?? ?3.通用二进制格式//解压后,简单配置即可
通用二进制格式安装mariadb: //先卸载之前安装的版本

?? ?1.卸载原有版本解压新版本

????????systemctl?stop?mariadb
????????cp?/usr/lib/systemd/system/mariadb.service?/root??备份unit文件
????????yum?remove?mariadb-server
????????https://downloads.mariadb.org/??
????????????mariadb-5.5.46-linux-x86_64.tar.gz????//文件名
????????tar?xvf?mariadb-5.5.46-linux-x86_64.tar.gz?-C?/usr/local/
????????cd?/usr/local
????????ln?-sv?mariadb-5.5.46-linux-x86_64/?mysql
?? ?2. 属组,目录及权限,配置文件
????????id?mysql?||?group?add?-r?-g?306?mysql?//没有的话,就创建该系统用户
????????cd?/usr/local/mysql/
????????chown?-R?root:mysql?./*
????????mkdir?/mydata/data?-pv
????????chown?-R?mysql.mysql?/mydata/data/
????????????注:/etc/my.cnf?是以前的包,需要删除,或者移动到其他地方
????????????/usr/local/mysql/support-files?:提供有配置文件
????????mkdir?/etc/mysql
????????cp?support-files/my-large.cnf?/etc/mysql/my.cnf?//这个目录也会被读取配置
????????vim?/etc/mysql/my.cnf
????????????[mysqld]
????????????...
????????????datadir?=?/mydata/data
????????????skip_name_resolve?=?ON
????????????innodb_file_per_table?=?ON
????????????...
?? ?3.初始化元数据:
????????scripts/mysql_install_db?--help
????????scripts/mysql_install_db??--user=mysql?--datadir=/mydata/data?--skip-name-resolve
????????启动:
????????????1.cp?support-files/mysql.server?/etc/init.d/mysqld?//使用centos6的方式
????????????????chmod?+x?
????????????????chkconfig?--add?mysqld
????????????????service?mysqld?start
????????????2.vim?/root/mairadb.service?//使用unit文件启动
????????????????unit文件修改添加
?? ?
小结:
?? ?1.添加系统用户,修改属组
?? ?2.创建目标目录,修改属主属组
?? ?3.复制并修改配置文件
?? ?4.初始化数据库(指定user,datadir,--skip-name-resolve)
?? ??? ?
后续步骤:?? ?
?? ?1.添加lib
?? ??? ?vim /etc/ld.so.conf.d/mariadb2.conf
?? ??? ? /usr/local/mysql/httpd
?? ??? ?ldconfig -p |grep mysqld
?? ?2.path
?? ??? ?vim /etc/profile.d/mysql.sh
?? ??? ??? ?export PATH=$PATH:/usr/local/mysql/bin
?? ??? ?source /etc/profile
?? ?3.man //在/usr/local目录下能自己找到?? ?
?? ?4.头文件include?? ?
?? ??? ?ln -sv /usr/local/mysql/include/mysql/ /usr/include/?? ?
?? ??? ?
步骤:cat INSTALL-BINARY //这个文件有具体的安装步骤
1.准备/mydata/datda
2.useradd?-r?mysql
????cd?/usr/local
????ln?-sv?mari-server?mysql
????cd?/usr/local/mysql/
????chown?-R?root:mysql?./*
????scripts/mysql_install_db?--user=mysql?--datadir=/mydata/data
????cp?support-files/mysql.server?/etc/init.d/mysqld
????chconfig?--add?mysqld
3.配置文件
????ini格式的配置文件,各程序均可通过此配置文件获取配置信息;
????????[program_name]
????配置文件查找次序:mysql?--help?//可以看到次序
????????1.RPM包的
????????????/etc/mysql/my.cnf-->/etc/my.cnf--->?~/.my.cnf?
????????????假如冲突:越靠后,起作用
????????2.通用二进制
????????????/etc/my.cnf?/etc/mysql/my.cnf?~/.my.cnf?
????????????假如冲突:越靠后,起作用
????cp?support-files/my-large.cnf?/etc/my.cnf
????添加:
????????datadir?=?/mydata/data
????????innodb_file_per_table?=?ON
????????skip_name_resolve?=?ON
4.启动服务
????service?mairadb?start
?? ??? ?
注:数据库系统非常浪费内存和硬件
?? ?原有的/etc/my.cnf会影响,需要处理
注意:?? ?
?? ?1. 5.x就是为了兼容MySQL5.x的,接口几乎一致,把支持开源自由软件的用户从社区版MySQL拿到MariaDB上
?? ?2.10.x说过会大量使用新技术,接口会与mysql彻底分道扬镳了。目标就是以后想MariaDB新接口过渡。
?? ??? ? ?
问题:unit文件
?? ?1.受systemd控制
?? ??? ?安装后生成的文件:/usr/lib/systemd/system/dhcpd.service
?? ??? ?[root@MT ~]# systemctl enable dhcpd
?? ??? ?Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
?? ?2.cp mariadb55.service /usr/lib/systemd/system/
?? ??? ?vim /usr/lib/systemd/system/mariadb55.service
?? ??? ?ExecStart=/usr/local/mysql/bin/mysqld_safe --basedir=/usr/local/mysql //修改,pre和post都删除即可
?? ??? ?配置文件,扔为原有的
?? ?

第二部分:SQL语句
DDL,DML
?? ?DDL:create,alter,drop
?? ?DML:insert,delete,update,select
?? ?DCL:grant,revoke,
MySQL图形化管理工具
?? ?
一、Mariadb程序的组成:
C:client
?? ?mysql:CLI交互式客户端程序
?? ?mysqldump:备份
?? ?mysqladmin:管理工具
?? ?mysqlbinlog:查看二进制日志
?? ?...
S:server
?? ?三类套接字地址:
?? ??? ?IPv4,3306/tcp
?? ??? ?Unix Sock:/var/lib/mysql/mysql.lock ,/tmp/mysql.lock //服务启动生成,关闭删除
?? ??? ??? ?本机:C===S:127.0.0.1
?? ?mysqld
?? ?mysqld_safe //建议运行使用的服务端程序,默认使用
?? ?mysqld_multi:多实例;
?? ?mysqld_upgrade:升级工具
?? ?...
获取其读取次序的方法
?? ?mysqld --verbose --help | less
?? ?mysql --help | less
mysql命令
?? ?常用选项
?? ?-u 用户名,默认为root
?? ?-h 远程主机,默认为localhost
?? ?-p 密码,默认为空
?? ?-D --database=name,直接选择数据库 //在6上默认显示当前所处的库,select database();查看,use db_name 使用该库
?? ?-e --excute=name ,直接运行该命令,并不进入交互式
?? ??? ?
注意:mysql的用户账号由两部分组成:‘usernmae‘@‘host‘;其中host用于限制此用户可通过哪些远程主机连接当前的mysql服务
?? ?host的表示方式,支持使用通配符;
?? ??? ?%:任意长度的任意字符;
?? ??? ??? ?172.16.%.%
?? ??? ?_:匹配单个字符:
二、c/s相关命令
客户端命令;
服务器命令;通过mysql连接发往服务器执行并取回结果
?? ?
客户端:
????mysql>?help
????\u?db_name
????\q?退出
????\d?CHAR:设定新的语句结束符
????\g?发送给服务器,通用结束符
????\G?语句结束标记,结果竖排方式显示
????\s?连接状态,
?? ??? ?
服务端命令:
?? ?DDL,DML,DCL
?? ?注意:每个语句必须有语句结束符,默认为分号(;)
?? ?
三、数据类型://目的,确定数据格式,能够参与的运算,可用有效范围
表:行和列
?? ?创建表:定义表中的字段
定义字段时:确定数据类型非常关键
?? ?用于确定:数据存储格式、能参与运算种类、可表示的有效的数据范围
字符型:字符集
?? ?码表:在字符和二进制数字之间建立映射关系
?? ?Db、client、server、Conn可以有不同的字符集
?? ?show characet set
类型:
????字符型
????????定长字符型://?0-255个字符
????????????char(#):不区分字符大小写
????????????binary(#):区分大小写?0-255
????????????varbinary(#):0-65535
????????变长字符型://?0-65535多个
????????????varchar(#):需要一个结束符
????????????varbinary(#):需要结束符,占用一个字符
????????对象存储://表中存放的是指针,真实的数据存储在其他地方
????????????text:存储大量文本,2^32次方个字符
????????????????tinytext????0-255?//字节
????????????????text????????0-65535
????????????????mediumtext????0-2^24
????????????????longtext????0-2^32
????????????blob:二进制大对象,区分大小写
????????????????tinyblob,blob,mediumblob,longblob?与text类似
????????内置类型:
????????????set:集合
????????????????SET?(‘a’,’b’,’c’)表示插入的值可以是a,b,c三个字符的任意组合,即插入‘a‘,‘ac‘,‘abc‘都是合法的
????????????enum:枚举
????????????????ENUM?(‘a’,?‘b’,‘c’)表示插入的值只能在a,b,c中进行选择
????数值型
????????精确数值型
????????????int(tinyint,smallint,mediumint,int,bigint)?1,2,3,4,8
????????????????int:2^32-1?或者-(2^32/2)-(2^32/2-1)?//有无符号
????????近似数值型
????????????float?4字节
????????????dobule?8字节
????????????????DECIMAL占用(m+2)个字节
????????????????DECIMAL(m,d)中,m表示数字的总长度,小数点不占位;
????????????????????d表示小数点后面的数字长度
????????????????????????????????????????
????日期时间型
????????日期型:date
????????时间型:time
????????日期时间型:datetime
????????时间戳:timestamp?//1970.1.1
????????年份:year(2),year(4)
????数据类型修饰符:
????????unsigned:无符号数值型
????????not?null:非空
????????????default?value:默认值
四、服务器端命令
?? ?DDL:数据定义语言,主要用于定义数据库组件,例如表,索引,视图,用户,存储过程
?? ??? ?create,alter,drop
?? ?DML:数据操作语言,主要用于管理表中的数据,实现数据的增,删,改,查
?? ??? ?insert,delete,update,select
?? ?
?? ?获取命令的帮助
?? ??? ?mysql>help COMMAND
?? ?
数据库管理:
?? ?1.创建:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ...
?? ??? ?create_specification:
?? ??? ?[DEFAULT] CHARACTER SET [=] charset_name [DEFAULT] COLLATE [=] collation_name
?? ??? ?字符集查看:show character set
?? ??? ?查看排序规则:show collation;
?? ??? ??? ?
?? ?2.修改ALTER {DATABASE | SCHEMA} [db_name]? alter_specification ...
?? ??? ?alter_specification:
?? ??? ??? ?[DEFAULT] CHARACTER SET [=] charset_name [DEFAULT] COLLATE [=] collation_name
?? ?3.删除DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
?? ?注:可以通过在data目录中创建子目录,来建立数据库,但是不建议这么做
?? ??? ?
表管理:
????创建:create?table?if?not?exists?tb_name?(create_defination)?
????????create_defination
????????????字段:col_name?data_type
????????????键:primary?key(col1,col2,...)
????????????????unique?key?(col1,col2,...)
????????????????foreign?key(clo)
????????????索引:
????????????????key|index?[index_name}?(col1,col2,..)
????????create?table?student(id?int?unsigned?not?null,name?char(30)?not?null,age?tinyint?unsigned,gender?enum(‘f‘,‘m‘));
????????create?table?student(id?int?unsigned?not?null,name?char(30)?not?null,age?tinyint?unsigned,gender?enum(‘f‘,‘m‘),primary?key(id,name));
????????注:unsigned?应该放在not?null之前,紧挨着int之后,否则会出错
????????
????????engine?=?存储引擎
????????show?tables?status?\G;查看默认引擎
????????show?tables?status?like?student?\G;查看指定表
????????show?engines:查看所有支持的引擎
????????show?table?status?like?‘student‘?\G;
注:数据库有专门的设计工具?? ??? ??? ?
?? ??? ?
修改:alter table table_name alter_specification
alter_specification
?? ?字段:
????????add:?ADD?[COLUMN]?col_name?column_definition?[FIRST?|?AFTER?col_name?]
????????????alter?table?student?add?class?varchar(100)?not?null?first;
????????drop:DROP?[COLUMN]?col_name|PRIMARY?KEY|FOREIGN?KEY?fk_symbol
????????????alter?table?student?drop?column?class;
????????modifty:MODIFY?[COLUMN]?col_name?column_definition
????????????只修改定义
????????????lter?table?student?modify?class?varchar(100)?not?null?after?id;
????????change:CHANGE?[COLUMN]?old_col_name?new_col_name?column_definition?[FIRST|AFTER?col_name]
??? 键:
?? ??? ?添加:add {primary key|unique key|unique key} index_name
?? ??? ?删除:
?? ??? ??? ?drop primary key
?? ??? ??? ?drop froeign key fk_symbol
?? ??? ??? ?drop key|index index_name //键在一定程度上也是索引
?? ?索引:
?? ??? ?添加:add {index|key} [index_name} {col1,col2,...}
?? ??? ??? ?删除:drop primary key
?? ??? ??? ??? ?alter table student drop primary key;
?? ??? ??? ??? ?alter table student add unique key (name);
?? ??? ??? ?查看:show indexes from student
?? ??? ??? ?
?? ??? ?表选项:
?? ??? ??? ?engine = engine_name //不建议,创建时直接指定即可
?? ??? ?表的引用方式:
?? ??? ??? ?tbl_name
?? ??? ??? ?create mydb.class //绝对路径,库名.表明
?? ??? ??? ??? ?

五、DDL和DML语句
第二种创建方式:复制表结构
第三种创建方式; 复制表数据

1.索引:加速查询,但是不利于查询操作
?? ?索引是特殊的数据结构:
?? ?索引要有名称:
?? ??? ?创建:crete [索引选项] index index_name [index_type] on tbl_name (col1,col2,...)
?? ??? ??? ?索引选项:unique,fulltext,spatial
?? ??? ??? ?index_type: btree/hash
?? ??? ??? ?mysql中只有memory才支持hash,而memroy表很少手动创建
?? ??? ??? ?create index named_class on student (name,class);
?? ??? ??? ?
?? ??? ??? ?ALTER TABLE table_name ADD INDEX index_name (column_list)
?? ??? ??? ?ALTER TABLE table_name ADD UNIQUE (column_list)
?? ??? ??? ?ALTER TABLE table_name ADD PRIMARY KEY (column_list)?? ??? ??? ?
?? ??? ?
?? ??? ?删除
?? ??? ??? ?DROP INDEX index_name ON talbe_name
?? ??? ??? ?
?? ??? ??? ?ALTER TABLE table_name DROP INDEX index_name
?? ??? ??? ?ALTER TABLE table_name DROP PRIMARY KEY
?? ??? ??? ?//没有修改,因为索引是及时创建的
?? ??? ?查看索引:
?? ??? ??? ?SHOW INDEX FROM mytable FROM mydb;
?? ??? ??? ?SHOW INDEX FROM mydb.mytable;
?? ??? ??? ?
?? ??? ??? ?mysql> show index from tblname;
?? ??? ??? ?mysql> show keys from tblname;?? ??? ??? ??? ?
?? ?
2.DML语句:
insert [into] tbl_name {col1,clo2,,,} {values|value} (va1,va2,va3...),(va1,va2,va3,,,),...
?? ?注意:
?? ??? ?字符型:引号
?? ??? ?数值型:前万不要引号
?? ?insert into student values (1,‘xiyu‘,‘ou yang feng‘,78,‘f‘);
?? ?insert into student (id,name) values (2,‘huang yao shi‘),(3,‘zhou botong‘);
?? ?select * from student;
select
?? ?1.select * from tbl_name
?? ?2.select col1,col2,col3,..? from tbl_name
?? ??? ?显示时,字段可以显示为别名
?? ??? ?select id as stuid,name from student; //投影
?? ?3.select col1,col2,...? from tbl_name where claues
?? ??? ?where clause:用于指明挑选条件
?? ??? ??? ??? ?age>30
?? ??? ??? ?操作符:
?? ??? ??? ??? ?>,>=,=,小于,小于等于
?? ??? ??? ?组合测试:
?? ??? ??? ??? ?and
?? ??? ??? ??? ?or
?? ??? ??? ??? ?not
?? ??? ??? ?操作符:
?? ??? ??? ??? ?between // age between 30 and 80
?? ??? ??? ??? ?like ‘pattern‘ //
?? ??? ??? ??? ??? ?like支持的通配符
?? ??? ??? ??? ??? ??? ?%:任意长度的任意字符
?? ??? ??? ??? ??? ??? ?_:单个字符
?? ??? ??? ??? ?rlike //正则表达式
?? ??? ??? ??? ??? ?^ 行首
?? ??? ??? ??? ??? ?$ 结尾
?? ??? ??? ??? ?is
?? ??? ??? ??? ??? ?is null//为空的
?? ??? ??? ??? ??? ?is not null //非空的
?? ?4.select col1,col2,... tbl_name [where clause] order by col_name,col_name2? [asc|desc]
?? ??? ?desc 将序排序
?? ??? ??? ??? ??? ?
?? ??? ?select id,name,age from student where age>30;
?? ??? ?elect id,name,age from student where name=‘OU yANG FENG‘ and age>30;
?? ??? ?select name from students where name like ‘%ang%‘
?? ??? ?select name from student where name rlike ‘^z.*bo*‘;
?? ??? ?select id,name from student order by id desc;

delete
?? ?delete from tbl_name [where where_conditon] [order by ...] [limit row_count]
?? ?删除是按行删除的,不能只删除一行的一个字段
?? ?delete from student where age is null //假如不给where,会删除整个表
?? ?生成随机数据:?? ?
?? ??? ?for i in {1..100} ; do AGE=$RANDOM%100;mysql -e "insert into testdb.student (id,name,age) values ($i,‘stu$i‘,$AGE);"; done
?? ??? ?stu$i,%ARG //使用“” 也可以
?? ?
?? ?delete from student? order by age desc limit 20;?? ?
?? ?select * from student order by age desc;

update:
?? ?update? //id最大的人的年龄减去10岁
?? ?update student set age=age-5 order by id desc limit 10;
?? ?select id,name,age from student order by id desc;
?? ?update student set age=age-15 where name not like ‘stu%‘;

六、用户账号及权限管理?? ??? ?
用户账号: ‘username‘@‘host‘
?? ?host:此用户访问当前服务器时,允许其通过哪些主机远程创建链接
?? ??? ?表示方式:IP,网络,主机名,通配符{%和_}
?? ?禁止检查主机名:my.cnf
?? ??? ?[mysqld]
?? ??? ??? ?skip_name_resolve = ON
?? ??? ??? ?
create user ‘wolf‘@‘host‘ identified by ‘password‘ //只有查看test库权限
删除用户:
?? ?drop user test;
查看用户信息:
?? ?select host,user,password from user;
授权级别:
?? ?权限级别:管理权限、数据库、表、字段、存储过程;
?? ?grant priv_type,... on [object_type]? db_name.tbl_name? to ‘user‘@‘host‘? [identified by ‘password‘]
?? ??? ?db_name.tb_name
?? ??? ?db_name.* //库内的所有表
?? ??? ?*.* 所有的库和表
?? ??? ?db_name.routine_name: 指定库上的存储过程或存储函数
?? ?[object_type]
?? ??? ?TABLE
?? ??? ?FUNCTION
?? ??? ?PROCEDURE
?? ?grant select on testdb.* to ‘testdb‘@‘192.168.4.%‘;?? ? //假如没有改用户的话,会自动创建该用户
?? ?grant select on testdb.student to ‘wolf‘@‘192.168.4.%‘;
?? ?flush privileges;
?? ?show grants for ‘wolf‘@‘192.168.4.%‘;
?? ?show grants for current_user; //查看当前用户授权
收回权限:
?? ?revoke select on testdb.student from ‘wolf‘@‘192.168.4.%‘;
?? ?revoke ...? from
?? ?grant? ...? on? ....? to ..A@B
?? ??? ?
注意:MariaDB服务进程启动时,会读取mysql库的所有授权表至内存中;
?? ?1.grant或revoke命令等执行的权限操作,会保存于表中,MariaDB此时一般会自动重新?? ?读取授权表,权限修改会立即生效
?? ?2.其他方式实现的权限,要想生效,必须flush privileges
?? ??? ?
注意;安全选项
?? ?/usr/local/mysql/bin/mysql_secure_installation 设置初始化密码
后期添加密码:
?? ?grant all privileges on MT.* to ‘mt‘@‘192.168.4.%‘;? //假如忘了加 identified by "password"
?? ?select user,host,password from user; //是没有密码的
?? ?update user set password=password(‘mingtian‘) where user=‘mt‘; //只能使用这种
?? ?insert 是插入一个新行,在这里不能使用

七、phpMyAdmin //mysql图形化管理工具
解压到网页目录
?? ?ln -sv phpMyAdmin-3.4.10.1-all-languages MyAdmin
?? ?cp config.sample.inc.php config.php
?? ?openssl rand -base64 15
?? ??? ?FSJJJFVLvfiQeoepws88

?? ?vim config.php //加密cookie
?? ??? ?$cfg[‘blowfish_secret‘] = ‘FSJJJFVLvfiQeoepws88‘; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
?? ?systemctl restart httpd?? ?

?? ?yum install php-mbstring -y //多种语言支持
?? ?
?? ?问题:缺少mcrypt扩展
?? ??? ?yum? install php-mcrypt
?? ?问题:必须启用cookie才能使用
?? ??? ?1.vim config.inc.php
?? ??? ??? ?$cfg[‘blowfish_secret‘] = ‘cookie‘;
?? ??? ??? ?$cfg[‘Servers‘][$i][‘connect_type‘] = ‘socket‘; //如果 MySQL 使用 socket 方式连接
?? ??? ?2.vim libraries/config.default.php
?? ??? ??? ?$cfg[‘blowfish_secret‘] = ‘cookie‘; 文件中默认为空,这里需要填写和 config.inc.php 一样的值。
?? ??? ??? ?$cfg[‘Servers‘][$i][‘socket‘] = ‘/tmp/mysql.sock‘; 这个需要根据自己 mysql 配置内容填写,如果不知道置空
图形管理工具:
?? ?phpMyAdmin
?? ?Navicat
?? ?Mysql-Front
?? ?ToadForMySQL
?? ?SQLyog
?? ??? ?
存储引擎的概念:?? myisam,innodb,
?? ?Myisam:不支持事务
?? ?innodb:支持事务,不支持fulltext索引

后面的文章会详细解释

MySQL入门(一)

标签:数据库   mysql   mariadb入门   dml   ddl   

人气教程排行