mariadb基础应用

mariadb基础应用

一、 前言

MariaDB is one of the most popular database servers in the world. It’s made by the original developers of MySQL and guaranteed to stay open source. Notable users include Wikipedia, WordPress.com and Google.

mariadb是mysql的一个分支,由同一个作者开发,mysql是作者大女儿的名字,mariadb是作者三女儿的名字。mysql是甲骨文(oracle)公司的眼中钉,故将其收购。mysql作者担心其会遭遇闭源危机,故有开发了mariadb,知名用户有谷歌,wordpress等等。

二、基本概念

1、mysql主要有两种存储引擎

MyISAM:mysql 5.5之前的默认数据库引擎,拥有较高的插入、查询速度,但不支持事务。

InnoDB:事务型数据库的首选引擎,支持ACID事务,支持行级锁定,mysql5.5之后成为默认的数据库引擎。

事务(Transaction):组织多个操作为一个整体,要么全部都执行,要么全部都不执行。就是转账,自己这边扣掉钱了,对方还没有到账,就要全部回滚。要不就自己掉钱了  对方也没拿到。

2、设计范式基础概念

1、第一范式:无重复的域(列不重复)

2、第二范式:在第一范式的基础上属性完全依赖于主键(行不重复,重复的放在另一张表上,形成一对多,例如统计XX部门的N的人的信息,都是XX部门,在第一张表写一次即可,映射到另外一张表。)

3、第三范式:在第二范式的基础上要求,一个关系不能包含已在其他关系已包含的非主关键字信息。一个关系中的A表现出年龄,B表不能存在。

三、mysql基础应用

常用mysql实用程序

mysqlshow

mysqladmin

mysql

1、mysqlshow 简单应用

(1)显示mysql服务器中的所有数据库:mysqlshow

mariadb基础应用

(2)显示mysql服务器中的表:mysqlshow mysql

mariadb基础应用

2、mysqladmin 简单应用

(1)设置mysql用户root的密码,密码为passwd

mysqladmin -u root password 'passwd'

mariadb基础应用

(2)显示mysql服务器的基本状态信息

mysqladmin  status  或
mysqladmin  -u root  -p  status

3、mysql详解

mysql是mysql命令行工具,相当于一个简单的SQL shell。

客户端命令:本地执行,常用如下

mysql> help
\u db_name:设定哪个库为默认数据库
\q:退出;
\d CHAR:设定新的语句结束符;
\g:语句结束标记;

服务端命令:通过 mysql 连接发往服务器执行并取回结果;

DDL, DML, DCL

注意:每个语句必须有语句结束符,默认为分号(;)

DDL :CREATE ALTER DROP

1、数据库管理:增删查改

创建:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name;
[DEFAULT] CHARACTER SET [=] charset_name
[DEFAULT] COLLATE [=] collation_name

查看支持的所有字符集:SHOW CHARACTER SET
查看支持的所有排序规则:SHOW COLLATION

修改:
ALTER {DATABASE | SCHEMA} [db_name]
[DEFAULT] CHARACTER SET [=] charset_name
[DEFAULT] COLLATE [=] collation_name

mariadb基础应用

2、表管理:增删查改

创建:
    CREATE TABLE [IF NOT EXISTS] tbl_name (create_defination)
    [table_options]
create_defination:
    字段:col_name data_type
    键:
    PRIMARY KEY (col1, col2, ...)
    UNIQUE KEY (col1, col2,...)
    FOREIGN KEY (column)
    索引:
    KEY|INDEX [index_name] (col1, col2,...)
table_options:
    ENGINE [=] engine_name
查看数据库支持的所有存储引擎类型:
    mysql> SHOW ENGINES;
查看某表的存储引擎类型:
    mysql> SHOW TABLES STATUS [LIKE 'tbl_name']

CREATE TABLE students(id INT UNSIGNED NOT NULL PRIMARYKEY,name CHAR(30) NOT NULL,age TINYINT UNSIGNED,gender ENUM('f','m'));

DESC students ;

mariadb基础应用

DROP TABLE students; 删除表格

修改表格:ALTER TABLE students ADD class VARCHAR(100) NOT NULL AFTER name;

mariadb基础应用

ALTER TABLE students MODIFY class VARCHAR(100) NOT NULL AFTER age;

mariadb基础应用

ALTER TABLE students DROP class; 删除表格中的class

3、索引管理:索引是特殊的数据结构

创建:
    CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [BTREE|HASH] ON tbl_name (col1, col2,,...)
删除:
DROP INDEX index_name ON tbl_name

mariadb基础应用

DML :INSERT SELECT DELETE UPDATE

1、INSERT

INSERT INTO:
    INSERT [INTO] tbl_name [(col1,...)] {VALUES|VALUE}
    (val1, ...),(...),...
注意:
字符型:引号;
数值型:不能用引号;

INSERT students(id,name) VALUES(2,'HuangYaoshi'),(3,'ZhouBotong');

SELECT * FROM students;

mariadb基础应用

2、SELECT

(1) SELECT * FROM tbl_name;
(2) SELECT col1, col2, ... FROM tbl_name;
    显示时,字段可以显示为别名;
    col_name AS col_alias
(3) SELECT col1, ... FROM tbl_name WHERE clause;
    WHERE clause:用于指明挑选条件;
    col_name 操作符 value:
    age > 30;


    操作符(1) :
        >, <, >=, <=, ==, !=
        组合条件:
        and
        or
        not
    操作符(2) :
        BETWEEN ... AND ...
        LIKE 'PATTERN'
        通配符:
            %:任意长度的任意字符;
            _:任意单个字符;
        RLIKE 'PATTERN'
            正则表达式对字符串做模式匹配;
        IS NULL
        IS NOT NULL
(4) SELECT col1, ... FROM tbl_name [WHERE clause] ORDER BY col_name, col_name2, ... [ASC|DESC];
    ASC: 升序;
    DESC: 降序;

mariadb基础应用

mariadb基础应用

3、DELETE:删除一整行,很危险,不加条件,整张表就没了,每一个回合都要确认N遍

DELETE FROM tbl_name [WHERE where_condition] [ORDER BY ...][LIMIT row_count]
(1) DELETE FROM tbl_name WHERE where_condition
(2) DELETE FROM tbl_name [ORDER BY ...] [LIMIT row_count]

4、UPDATE:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET
col_name1=value1 [, col_name2=value2] ... [WHERE where_condition] [ORDER BY ...]
[LIMIT row_count]

UPDATA students SET age=age-5 ORDER BY id DESC;

UPDATA students SET age=age-15 WHERE name NOT LIKE 'stu%';

用户账户及权限管理:

1、创建用户账号

CREATE USER 'testuser'@'192.168.%.%' IDENTIFIED BY 'testpass'; 只有查看的权限,没有写权限

mariadb基础应用

禁止检查主机名:my.cnf

[mysqld]

skipnameresolve = ON

2、删除用户账号

DROP USER ’user‘@’host' [, user@host] …

3、授权

GRANT priv_type,... ON [object_type] db_name.tbl_name TO 'user'@'host' [IDENTIFIED BY 'password'];

CREATE USER 'testuser'@'192.168.%.%' IDENTIFIED BY 'testpass';

GRANT SELECT ON mydb.students TO 'testuser'@'192.168.%.%';

FLUSH PRIVILEGES;

mysql -utestuser -h192.168.1.120 -ptestpass

mariadb基础应用

查看指定用户所获得的授权:
SHOW GRANTS FOR 'user'@'host'
SHOW GRANTS FOR CURRENT_USER;

4、回收权限

REVOKE priv_type, ... ON db_name.tbl_name FROM
'user'@'host';
注意:MariaDB 服务进程启动时,会读取 mysql 库的所有授权表至内存中;
(1) GRANT 或 REVOKE 命令等执行的权限操作会保存于表中,MariaDB 此时一
般会自动重读授权表,权限修改会立即生效;
(2) 其它方式实现的权限修改,要想生效,必须手动运行 FLUSH PRIVILEGES
命令方可;

5、加固mysql服务器

加固 mysql 服务器,在安装完成后,运行 mysqlsecureinstallation 命令;

6、图形管理组件phpMyAdmin见上一个博客。

原创文章,作者:N24_yezi,如若转载,请注明出处:http://www.178linux.com/63876

(0)
N24_yeziN24_yezi
上一篇 2016-12-16 12:29
下一篇 2016-12-16 15:02

相关推荐

  • N25-第七周作业

    第七周作业 — 1、创建一个10G分区,并格式为ext4文件系统; fdisk /dev/sdanp2enter+10Gwpartx -a /dev/sda(1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;mke2fs -t ext4 -b 2018 -m 2 -L “MYDATA” /…

    Linux干货 2017-02-25
  • 磁盘及文件系统管理

    Linux磁盘及文件系统: 磁盘:用于持久存放数据 常见的磁盘有:机械硬盘、固态硬盘 I/O Ports: I/O设备地址 常见的硬盘接口类型:      IDE(ata):并口,133MB/s     SCSI:并口,UltraSCSI320,320MB/s,UltraSCSI…

    Linux干货 2016-08-26
  • N28-第三周

    1. 列出當前系統上所有已經登入的用戶的用戶名,注意:同一個用戶登入多次,則只顯示一次即可。
    2. 取出最後登入到當前系統的用戶的相關信息。
    3. 取出當前系統上被用戶當做其默認shell的最多的那個shell。
    4. 將/etc/passwd中的第三個字段數值最大的後10個用戶的信息全部改為大寫後保存至/tmp/maxusers.txt文件中。
    5. 取出當前主機的IP地址,提示:對ifconfig命令的結果進行切分。
    6. 列出/etc目錄下所有以.conf結尾的文件的文件名,並將其名字轉換為大寫後保存至/tmp/etc.conf文件中。
    7. 顯示/var目錄下一級子目錄或文件的總各數。
    8. 取出/etc/group文件中第三個字段數值最小的10個組的名字。
    9. 將/etc/fstab和/etc/issue文件的內容合併為同一個內容後保存至/tmp/etc.test文件中。
    10. 請總結描述用戶和組管理類命令的使用方法並完成以下練習:
    (1) 創建組distro,其GID為2016。
    (2) 創建用戶mandriva,其ID號為1005,基本組為distro。
    (3) 創建用戶mageia,其ID號為1100,家目錄為/home/linux。
    (4) 給用戶mageia添加密碼,密碼為mageedu。
    (5) 刪除mandriva,但保留其家目錄。
    (6) 創建用戶slackware,其ID號為2002,基本組為distro,附加組peguin。
    (7) 修改slackware的默認shell為/bin/tcsh。
    (8) 為用戶slackware新增附加組admins。

    2017-12-19
  • 更改CentOS7 默认网卡eno16777736为eth0

        安装完CentOS7,它的默认网卡名为eno16777736 看着不爽!习惯了eth0的命名方式。 编辑 /etc/sysconfig/grub 在“GRUB_CMDLINE_LINUX”里添加net.ifnames=0 biosdevname=0 保存退出 如图: 然后执行 grub2-mkconfig -o…

    系统运维 2015-12-19
  • 马哥教育网络19期+第四周练习博客

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。  cp /etc/skel /home/tuser1  chmod -R  700 /home/tuser1 2、编辑/etc/group文件,…

    Linux干货 2016-06-19
  • 第四周练习与作业

    一、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符 复制文件至/tmp目录下: cp /etc/profile /tmp/ vim /tmp/profile 进入文件命令模式下,使用正则表达式  ;%s/^[[:blank:]]\+//g 二、复制/etc/rc.d/init.d/fu…

    2017-08-05

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-23 12:19

    赞~详细描述mysql一些常用的操作~~建议补充下备份、恢复相关的内容,会更好点~~继续加油~