MySQL入门(一)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
第一部分:MySQL基础概念
Mariadb的基础:
     设计范式:
         第一范式:字段是原子性的
         第二范式:非主属性完全依赖于主属性    
                 存在可用主键
         第三范式:非主属性对主属性不存在传递函数依赖关系。
                 任何都不应该依赖于其他表的非主属性
     约束:主键、唯一键、外键、检查性约束
     SQL组件
         数据库、表、索引、视图、存储过程、存储函数、触发器、事件调度器、用户和权限
         元数据数据库:mysql
     Mariadb安装方式:
         rpm包
         通用二进制
         编译安装
第二部分:SQL语句
     DDL,DML
         DDL:create,alter,drop
         DML:insert,delete,update,select
         DCL:grant,revoke,
     MySQL图形化管理工具


第一部分:MySQL基础概念        
一、基础架构
1.数据库系统:(通用模型)    
 1.png   
分析器:分析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
    
三、数据库其他概念
数据库:数据的集合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
     表:为了满足范式设计要求,将一个数据集拆分为多个
     约束: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.卸载原有版本解压新版本

1
2
3
4
5
6
7
8
         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-x 86 _ 64 .tar.gz    //文件名
         tar xvf mariadb -5.5 . 46 -linux-x 86 _ 64 .tar.gz -C /usr/ local /
         cd /usr/ local
         ln -sv mariadb -5.5 . 46 -linux-x 86 _ 64 / mysql

    2. 属组,目录及权限,配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
         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.初始化元数据:

1
2
3
4
5
6
7
8
9
         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 //使用centos 6 的方式
                 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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连接发往服务器执行并取回结果
    
客户端:

1
2
3
4
5
6
7
     mysql>  help
     \u db_name
     \q 退出
     \d CHAR:设定新的语句结束符
     \g 发送给服务器,通用结束符
     \G 语句结束标记,结果竖排方式显示
     \s 连接状态,

        
服务端命令:
    DDL,DML,DCL
    注意:每个语句必须有语句结束符,默认为分号(;)
    
三、数据类型://目的,确定数据格式,能够参与的运算,可用有效范围
表:行和列
    创建表:定义表中的字段
定义字段时:确定数据类型非常关键
    用于确定:数据存储格式、能参与运算种类、可表示的有效的数据范围
字符型:字符集
    码表:在字符和二进制数字之间建立映射关系
    Db、client、server、Conn可以有不同的字符集
    show characet set
类型:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
     字符型
         定长字符型://  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 ) //有无符号
              bit Bit类型只有 1 0 两个值
         近似数值型
             float  4 字节
             dobule  8 字节
                 DECIMAL占用(m+ 2 )个字节
                 DECIMAL(m,d)中,m表示数字的总长度,小数点不占位;
                     d表示小数点后面的数字长度
                                         
     日期时间型
         日期型:date
         时间型:time
         日期时间型:datetime
         时间戳:timestamp // 1970 01 01 00 00 00 秒(北京时间 1970 01 01 08 00 00 秒)起至现在的总秒数
         年份:year( 2 ),year( 4 )
     数据类型修饰符:
         unsigned:无符号数值型
         not null:非空 //        
             default  value:默认值

字符型:

1.png

数值型:

1.png

字符修饰符:

    not null/null/default 'string'/collation ''/ 排序的规则

    show character set;

    show collation ;

DML:数据操作语言,主要用于管理表中的数据,实现数据的增,删,改,查
        insert,delete,update,select

数值类型修饰符:

    not null/null/default numer/

    auto_increment/select last_insert_id() //查看增长到了哪个    

float和double修饰符:
    auto_increment,default,not null,null,unsigned,zerofile
bit:二级制类型
booltype:
    tinyint(1) //mysql的bool型是只显示tinyint(1),1或者0
    boolean
    bool 
日期修饰符:

    null/not null/default

enum和set类型
    enum //从1-65535个字符串,任意一个元素,但是不能组合
    set //1-64 bit个字符串的集合,元素可任意组合
    
    存储时:enum('a','1') //在存储数据的时候,存储的是,enmu中的索引
        例如insert .. value('a') //存储的是 0 ,也就是enum('a')的索引,而不是a字串
    set存储:
        set('a','b','c') //insert 数据'a' ,存储的是100 /因为a出现,其他没有出现
    //因此一般enum和set不拿来排序和比较    
    修饰符:
        not null/null/default

四、服务器端命令
    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目录中创建子目录,来建立数据库,但是不建议这么做
        
表管理:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
     创建:create table if not exists tb_name (create_defination) 
         create_defination
             字段:col_name data_type
             键:primary key(col 1 ,col 2 ,...)
                 unique key (col 1 ,col 2 ,...)
                 foreign key(clo)
             索引:
                 key|index [index_name} (col 1 ,col 2 ,..)
         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
    字段:

1
2
3
4
5
6
7
8
         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索引

后面的文章会详细解释










本文转自MT_IT51CTO博客,原文链接:http://blog.51cto.com/hmtk520/2049104,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值