MariaDB安装及基本配置(CentOS6.9)

数据库基础概念

数据库(Database, DB)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。

DBMS: Database Management System, 数据库管理系统。我们平时所说的数据库其实指DBMS.

RDBMS: Relation Database Management System, 关系型数据库管理系统,其主要的概念:
1. 关系:二维表,表中的行、列次序不重要;
2. 元祖:表中的每一行,又称为一条记录
3. 属性:表中的每一列,又称为字段
4. 域:属性的取值范围
5. 主键:用于唯一确定一行的一个或多个字段

事务transaction:用户定义个一组不可分割的数据库操作序列。事务满足ACID原则:

  • A: Atomicity, 原子性。事务是一个整体,这组操作要么都没做要么都做完。如果事务失败,事务中已执行完成的操作会回滚(roolback);
  • C: Consistency, 一致性。与事务相关的所有数据库状态在事务提交后有一个期望值,事务执行完后所有的值都应该满足期望;如果部分满足部分不满足,说明事务是失败的,要回滚;
  • I: Isolation, 隔离性。事务执行过程中,处于中间状态的数据应该对其他事务不可见;
  • D: Duration, 持久性。事务一旦被提交对数据库的修改是永久性的。

MariaDB(CentOS6.9)

MariaDB是一种RDBMS,和MySQL一脉相承。

yum安装

yum源配置

yum源可以在MariaDB相关网页获取,根据自己的系统版本选择:

安装

yum install mariadb-server --enablerepo=MariaDB
# --enablerepo=MariaDB, MariaDB为使用的yum源名称
# 我是用的操作系统版本是centOS6.9,在CentOS7中还需要安装mariadb

配置

安全配置

不做安全配置,任意用户都可以用root账户登录mysql,并且不需要输入密码,这是不安全的。

# 输入当前root用户密码,刚安装完密码为空,直接回车
Enter current password for root (enter for none): # 设置新的root账号密码
Set root password? [Y/n] y
New password:
Re-enter new password: # MariaDB安装默认会设置一个匿名账户允许任何人登录,建议删除
Remove anonymous users? [Y/n] y # 默认可以从远程主机使用root账户登录,建议将root账户的使用限定在本机,以确保root账户密码通过网络被获取
Disallow root login remotely? [Y/n] y # 是否删除测试用的数据库'test',生产环境建议删除
Remove test database and access to it? [Y/n] y # 重新加载授权表,使之前的修改生效
Reload privilege tables now? [Y/n] y
字符集配置

为了避免中文乱码的问题建议对MariaDB的,默认字符集进行设置。修改配置文件/etc/my.cnf.d/server.cnf

[client]
default-character-set=utf8 [mysql]
default-character-set=utf8 [mysqld]
character-set-server=utf8
init_connect='SET collation_connection=utf8-unicode_ci'
init_connect='SET NAMES utf8'
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
其他配置
[mysqld]
datadir = /app/data # 数据文件存储位置,默认存在mysql账户的家目录
innodb_file_per_table = on # 为每个表格创建新文件
skip_name_resolve = on # 禁止主机名解析

服务

启动
$ service mysql start

# 查看服务是否成功启动,默认监听端口3306
$ ss -nlt |grep 3306
LISTEN 0 50 *:3306 *:* # 查看进程
$ ps aux |grep mysql
root 13041 0.0 0.1 11488 1472 pts/1 S 05:31 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/centos6.9-python.pid
mysql 13225 0.0 10.0 732340 101216 pts/1 Sl 05:31 0:03 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/centos6.9-python.err --pid-file=/var/lib/mysql/centos6.9-python.pid --wsrep_start_position=00000000-0000-0000-0000-000000000000:-1
root 13267 0.0 0.3 225688 3064 pts/0 S+ 05:32 0:00 mysql
root 13646 0.0 0.0 103332 844 pts/1 S+ 06:54 0:00 grep mysql

命令行交互式客户端程序mysql

交换命令行的输入对大小写不敏感。

登录 mysql -uUserName -p

登录选项:
-uUSERNAME: 用户名 ,默认为root
-hHOST: 服务器主机, 默认为localhost 
-pPASSWORD:用户的密码,默认为空密码

当前状态 status

可以查看当前用户、字符集等信息。

MariaDB [mysql]> status
--------------
mysql Ver 15.1 Distrib 5.5.58-MariaDB, for Linux (x86_64) using readline 5.1 Connection id: 2
Current database: mysql
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server: MariaDB
Server version: 5.5.58-MariaDB-wsrep MariaDB Server, wsrep_25.22.r9949137
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 2 hours 3 min 21 sec Threads: 1 Questions: 78 Slow queries: 0 Opens: 17 Flush tables: 2 Open tables: 41 Queries per second avg: 0.010
--------------
查看用户
MariaDB [mysql]> show databases;    # 查看MariaDB中管理的所有数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec) MariaDB [test]> use mysql # 选择要使用的数据库
Database changed MariaDB [mysql]> select user(); # 查看当前用户
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec) MariaDB [mysql]> select host, user, password from user; # 查看当前系统的所有账户
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | root | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA |
| 127.0.0.1 | root | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA |
| ::1 | root | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA |
+-----------+------+-------------------------------------------+
3 rows in set (0.00 sec) MariaDB [mysql]> desc user; # 查看user表结构
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |

user表的主键包含两个字段,‘host’和‘user’,表明mysql用户账号由这两个字段唯一确定

用户授权

grant PRIVS on TABLES to USERNAME@'HOSTS' identified by 'PASSWD'; # 大写的部分是自定义的

  • PRIV: 限定用户权限;all, select, insert, update, delete, create, drop, index, alter, grant, references, reload, shutdown, process, file其中一部分
  • TABLES: 用户对那些表有权限
  1. *.* 所有库的所表
  2. db_name.*指定库的所有表
  3. db_name.tb_name: 指定库的指定表
  • HOSTS: 限定用户可以通过那些远程主机连接mysql,支持通配符

  1. % 匹配任意长度的任意字符 172.16.0.0/16 等价于 172.16.%.%

  2. _ 匹配任意单个字符

MariaDB [mysql]> grant all on *.* to python@'192.168.129.0/24' identified by '123456';
Query OK, 0 rows affected (0.01 sec) MariaDB [mysql]> select host, user, password from user;
+------------------+--------+-------------------------------------------+
| host | user | password |
+------------------+--------+-------------------------------------------+
| localhost | root | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA |
| 127.0.0.1 | root | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA |
| ::1 | root | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA |
| 192.168.129.0/24 | python | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------------------+--------+-------------------------------------------+
4 rows in set (0.00 sec)
查看用户权限 SHOW GRANTS FOR 'user'@'host';

可以查看帮助:help show grants

示例:

MariaDB [mysql]> show grants;   #显示当前用户权限
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*E74858DB86EBA20BC33D0AECAE8A8108C56B17FA' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
回收权限 REVOKE priv_type, ... ON db_name.tb_name FROM 'user'@'host

MariaDB服务进程启动时会读取mysql库中所有授权表至内存
1. GRANT或REVOKE等执行权限操作会保存于系统表中,MariaDB的服务进程通常会自动重读授权表,使之生效
2. 对于不能够或不能及时重读授权表的命令,可手动让MariaDB的服务进程重读授权表,在交换命令行中执行:FLUSH PRIVILEGES;

服务器参数

查看变量: show [global|session] variables [like Pattern]

修改变量:set variable_assignment

variable_assignment:
user_var_name = expr
| [GLOBAL | SESSION] system_var_name = expr
| [@@global. | @@session. | @@]system_var_name = expr

示例:

MariaDB [mysql]> show variables like '%slow%';
+---------------------+--------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+---------------------+--------------------------------------------------------------------------------------------------------------+
| log_slow_filter | admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk |
| log_slow_queries | OFF |
| log_slow_rate_limit | 1 |
| log_slow_verbosity | |
| slow_launch_time | 2 |
| slow_query_log | OFF |
| slow_query_log_file | centos6-slow.log |
+---------------------+--------------------------------------------------------------------------------------------------------------+
7 rows in set (0.00 sec) MariaDB [mysql]> set global slow_query_log=on;
Query OK, 0 rows affected (0.00 sec) MariaDB [mysql]> show variables like 'slow_query_log';
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| slow_query_log | ON |
+----------------+-------+
1 row in set (0.00 sec)
参考

[1] https://www.cnblogs.com/the-one/p/5554976.html 字符集配置

 
 
 

最新文章

  1. 中国版的 Office 365
  2. IBM WebSphere MQ 7.5基本用法
  3. MVC ajaxSubmit上传图片
  4. Loadrunner基础:Loadrunner Vuser基本概念和应用
  5. fedora 禁止nouveau加载
  6. 【自学iOS攻略】了解有什么新技术的途径
  7. Oracle经常使用函数
  8. Hibernate(三)之配置文件详解
  9. Go 1.9 sync.Map揭秘
  10. base64字符串转文件,以及ngImgCrop裁剪图片并上传保存到服务器示例
  11. 【原】Java学习笔记015 - 面向对象
  12. 2018牛客网暑假ACM多校训练赛(第五场)F take 树状数组,期望
  13. CentOS下rpm命令详解
  14. vue-if和v-show区别
  15. 如何从GitHub仓库clone项目
  16. ibatis.net:第八天,QueryForDictionary
  17. python编码(一)
  18. DDL为什么不能rollback?
  19. go语言基础之不要操作没有合法指向的内存
  20. Android之MVC模式

热门文章

  1. python学习笔记(4)-基本数据类型-数字类型及操作
  2. jenkins 邮箱设置
  3. ArcGIS中使用异步回调函数查询图层Graphic
  4. mysql高可用架构之MHA,haproxy实现读写分离详解
  5. php配置-解决大数据超多字段的POST方式提交无法完全接受的问题
  6. adoquery怎样判断数据在缓存中有修改啊
  7. JS 原型和闭包
  8. servlet篇 之 生命周期
  9. python之旅5【第五篇】
  10. 李昊大佬的CV模板