欢迎投稿

今日深度:

mariadb,

mariadb,


MARIADB

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL(通用公共许可证)授权许可 MariaDB的目的是完全兼容MySQL,MariaDB虽然被视为MySQL数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL ,MariaDB是目前最受关注的MySQL数据库衍生版,也被视为开源数据库MySQL的替代品。
数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。为关系型数据库(Relational Database Management System), 这种所谓的”关系型”可以理解为”表格”的概念, 一个关系型数据库由一个或数个表格组成
DML(data manipulation language)数据操纵语言:
就是我们最经常用到的 SELECT、UPDATE、INSERT、DELETE。 主要用来对数据库的数据进行一些操作。
SELECT 列名称 FROM 表名称;
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值;
INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,….);
DELETE FROM 表名称 WHERE 列名称 = 值;
• DDL(data definition language)数据库定义语言:
其实就是我们在创建表的时候用到的一些sql,比如说:CREATE、ALTER、DROP等。DDL主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
….
);
ALTER TABLE table_name;
ALTER COLUMN column_name datatype;
DROP TABLE 表名称;
DROP DATABASE 数据库名称;
DCL(Data Control Language)数据库控制语言:
是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。这个比较少用到。

一、安装部署
系统默认已经安装该数据库,如果没有安装,使用以下命令进行安装
[root@mail ~]# yum install -y mariadb
启动数据库服务
[root@mail ~]# systemctl restart mariadb
初始化数据库
[root@mail ~]# mysql_secure_installation
Enter current password for root (enter for none):<–初次运行直接回车
设置密码
Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码
其他配置
Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车
Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车,
Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车
Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车
初始化MariaDB完成,接下来测试登录
在防火墙添加永久允许策略
[root@mail ~]# firewall-cmd –permanent –add-service=mysql
重新加载防火墙配置
[root@mail ~]# firewall-cmd –reload
二、字符编码
要修改的配置文件位于 /etc/my.cnf.d目录下:
client.cnf
在[client]字段里加入
default-character-set=utf8
server.cnf
在[mysqld]字段里加入
character-set-server=utf8
systemctl restart mariadb 配置生效,修改后的效果如下:
MariaDB [mysql]> show variables like “%char%”;
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+

三、设置数据库字母大小写不敏感
vi /etc/my.cnf.d/server.cnf
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、字段内容默认情况下是大小写不敏感的。
在[mysqld]下加上】
lower_case_table_names=1
默认是等于0的,即大小写敏感。改成1就OK了。如果之前已经建了数据库要之前建立的数据库删除,重建才生效。
四、登陆使用
数据库系统登陆
mysql -h 主机地址 -u 用户名 -p 用户密码
[root@localhost ~]# mysql -uroot -predhat
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
MariaDB [(none)]>
[root@localhost ~]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
MariaDB [(none)]>
mysql -u root -h localhost -p [DATABASE NAME]
[root@localhost ~]# mysql -u root -h localhost -p mysql
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
MariaDB [mysql]>
mysql的密码都在mysql这个库里面,有一张表叫user,这里管理了可以登陆数据库的用户
查看系统有多少数据库
MariaDB [(none)]> show databases;
数据库初始化安装完毕会有三个基本库mysql 、information_schema、performace_schema
MariaDB [(none)]> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
|mysql | |
| performance_schema |
+——————–+
4 rows in set (0.00 sec)

1、information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式。什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。在MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权 限等。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。
2、mysql 包含权限配置,事件,存储引擎状态,主从信息,日志,时区信息,用户权限配置等,MariaDB/MySQL中的权限表都存放在mysql数据库中。
performance_schema
3、 内存型数据库,使用performance_schema 存储引擎,通过事件机制将mysql服务的运行时状态采集并存储在performace_schema数据库。注意,两个单词之间用下划线连接时,表示performance_schema是一个数据库;用空格分开时,表示一个数据库性能方案,也表示一个存储引擎
退出数据库系统
MariaDB [(none)]> quit
MariaDB [(none)]> exit

创建一个数据库
MariaDB [(none)]> create database luntan;
MariaDB [(none)]> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| luntan |
| mysql |
| performance_schema |
+——————–+
切换到某个数据库下
MariaDB [mysql]> use mysql;
查看数据库的表
MariaDB [mysql]> show tables;
+—————————+
| Tables_in_mysql |
+—————————+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| ndb_binlog_index |
| person |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+—————————+
25 rows in set (0.00 sec)

查看数据表的表结构

MariaDB [mysql]> desc user;
+————————+———————————–+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+————————+———————————–+——+—–+———+——-+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum(‘N’,’Y’) | NO | | N | |
| Insert_priv | enum(‘N’,’Y’) | NO | | N | |
| Update_priv | enum(‘N’,’Y’) | NO | | N | |
| Delete_priv | enum(‘N’,’Y’) | NO | | N | |
| Create_priv | enum(‘N’,’Y’) | NO | | N | |
| Drop_priv | enum(‘N’,’Y’) | NO | | N | |
| Reload_priv | enum(‘N’,’Y’) | NO | | N | |
| Shutdown_priv | enum(‘N’,’Y’) | NO | | N | |
| Process_priv | enum(‘N’,’Y’) | NO | | N | |
| File_priv | enum(‘N’,’Y’) | NO | | N | |
| Grant_priv | enum(‘N’,’Y’) | NO | | N | |
| References_priv | enum(‘N’,’Y’) | NO | | N | |
| Index_priv | enum(‘N’,’Y’) | NO | | N | |
| Alter_priv | enum(‘N’,’Y’) | NO | | N | |
| Show_db_priv | enum(‘N’,’Y’) | NO | | N | |
| Super_priv | enum(‘N’,’Y’) | NO | | N | |
| Create_tmp_table_priv | enum(‘N’,’Y’) | NO | | N | |
| Lock_tables_priv | enum(‘N’,’Y’) | NO | | N | |
| Execute_priv | enum(‘N’,’Y’) | NO | | N | |
| Repl_slave_priv | enum(‘N’,’Y’) | NO | | N | |
| Repl_client_priv | enum(‘N’,’Y’) | NO | | N | |
| Create_view_priv | enum(‘N’,’Y’) | NO | | N | |
| Show_view_priv | enum(‘N’,’Y’) | NO | | N | |
| Create_routine_priv | enum(‘N’,’Y’) | NO | | N | |
| Alter_routine_priv | enum(‘N’,’Y’) | NO | | N | |
| Create_user_priv | enum(‘N’,’Y’) | NO | | N | |
| Event_priv | enum(‘N’,’Y’) | NO | | N | |
| Trigger_priv | enum(‘N’,’Y’) | NO | | N | |
| Create_tablespace_priv | enum(‘N’,’Y’) | NO | | N | |
| ssl_type | enum(”,’ANY’,’X509’,’SPECIFIED’) | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) | NO | | 0 | |
| plugin | char(64) | NO | | | |
| authentication_string | text | NO | | NULL | |
+————————+———————————–+——+—–+———+——-+
42 rows in set (0.01 sec)#查询user表中的某些数据
MariaDB [mysql]> select host,user,password from user;
MariaDB [mysql]> select host,user,password from user;
+———–+——+——————————————-+
| host | user | password |
+———–+——+——————————————-+
| localhost | root | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |
| 127.0.0.1 | root | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |
| ::1 | root | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |
+———–+——+——————————————-+
3 rows in set (0.00 sec)

创建一张表
MariaDB [mysql]> create table person (
NUMBER INT(11),
NAME VARCHAR(255),
BIRTHDAY DATE );
查询创建好的表的表结构
MariaDB [mysql]> desc person;
MariaDB [mysql]> desc person;
+———-+————–+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+———-+————–+——+—–+———+——-+
| NUMBER | int(11) | YES | | NULL | |
| NAME | varchar(255) | YES | | NULL | |
| BIRTHDAY | date | YES | | NULL | |
+———-+————–+——+—–+———+——-+
3 rows in set (0.00 sec)
插入几条数据
MariaDB [mysql]> insert into person (number,name,birthday) values (1,’haha’,20160509);
MariaDB [mysql]> insert into person (number,name,birthday) values (2,’heihei’,20160609);
MariaDB [mysql]> insert into person (number,name,birthday) values (3,’maomao’,20160709);
MariaDB [mysql]> insert into person (number,name,birthday) values (1,’步步’,20160709);
查询表的内容
MariaDB [mysql]> SELECT * FROM person;
+——–+——–+————+
| NUMBER | NAME | BIRTHDAY |
+——–+——–+————+
| 1 | 步步 | 2016-05-09 |
| 1 | haha | 2016-05-09 |
| 2 | heihei | 2016-06-09 |
| 3 | maomao | 2016-07-09 |
+——–+——–+————+

删除表的内容
MariaDB [mysql]> delete from person where name=”maomao”;
MariaDB [mysql]> delete from person where number=1;
MariaDB [mysql]> SELECT * FROM person ;
+——–+——–+————+
| NUMBER | NAME | BIRTHDAY |
+——–+——–+————+
| 2 | heihei | 2016-06-09 |
+——–+——–+————+
1 row in set (0.00 sec)

更新表中的数据
MariaDB [mysql]> update person set name=”haha” where number=2;
MariaDB [mysql]> SELECT * FROM person
-> ;
+——–+——+————+
| NUMBER | NAME | BIRTHDAY |
+——–+——+————+
| 2 | haha | 2016-06-09 |
+——–+——+————+
1 row in set (0.00 sec)

五、用户的管理和访问权限的控制

创建数据库登陆用户
MariaDB/MySQL中的user由用户名和主机名构成,如”root@localhost”,同用户名但不同主机名对MySQL/MariaDB来讲是不同的,也就是说”root@localhost”和”root@127.0.0.1”是不同的用户,尽管它们都是本机的root。
命令:CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’;
说明:
username - 你将创建的用户名,
host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. 可以使用localhost、ip地址或者hostname,使用’%’表示不限制主机。‘user’@’host’构成一个唯一用户。
password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.

MariaDB [mysql]> create user maomao@localhost identified by ‘redhat’;
MariaDB [mysql]> create user xixi@localhost identified by ‘xixi’;
查看当前使用用户:MariaDB [(none)]> select user();
查看当前用户的数据库:MariaDB [(none)]> select database();

查看结果
MariaDB [mysql]> select host,user from user where user=”maomao”;
退出重新使用maomao用户登录数据库
[root@mail ~]# mysql -u maomao -p
查看可以访问的数据库
MariaDB [(none)]> show databases;

命令:GRANT privileges ON databasename.tablename TO ‘username’@’host’
说明: privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等.如果要授予所的权限则使用ALL.;
databasename - 数据库名,
tablename-表名,
如果要授予该用户对所有数据库和表的相应操作权限则可用 * 表示, 如 .

给maomao用户一张表的权限
MariaDB [mysql]> grant select,update,insert,delete on mysql.person to maomao@localhost;

退出数据库系统,并使用maomao用户重新登陆
测试查询的权限
MariaDB [mysql]> select * from person;
测试插入的权限
MariaDB [mysql]> insert person (number,NAME,BIRTHDAY) value (1,”hehe”,20161010);
测试更新数据的权限
MariaDB [mysql]> update person set name=”heihei” where number=2;
测试删除数据的权限
MariaDB [mysql]> delete from person where number=1;

使用root用户登录,改变maomao用户的权限
MariaDB [mysql]> revoke select on mysql.person from maomao@localhost;
使用select语句进行查询表,确认权限已被禁用
MariaDB [mysql]> select * from person;
六、备份和还原
导出数据和数据结构

mysqldump -u [数据库用户名] -p [要备份的数据库名称]>[备份文件的保存路径]

[root@localhost ~]# mysqldump -u root -p mysql >/mysql_backup_20180816.dump
Enter password:
使用root用户登录数据库,删除person表
删除表
MariaDB [mysql]> drop table person;
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> select * from person;
ERROR 1146 (42S02): Table ‘mysql.person’ doesn’t exist
退出系统,进行还原操作
[root@localhost ~]# mysql -u root -p mysql < /mysql_backup_20180816.dum
登陆数据库系统
[root@mail ~]# mysql -u root -p
查看person表
MariaDB [mysql]> select * from person;
+——–+——+————+
| NUMBER | NAME | BIRTHDAY |
+——–+——+————+
| 2 | haha | 2016-06-09 |
+——–+——+————+
1 row in set (0.00 sec)

www.htsjk.Com true http://www.htsjk.com/mariadb/34495.html NewsArticle mariadb, MARIADB MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL(通用公共许可证)授权许可 MariaDB的目的是完全兼容MySQL,MariaDB虽然被视为MySQL数据库的替代品,但...
相关文章
    暂无相关文章
评论暂时关闭