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 字符集配置

 
 
 

MariaDB安装及基本配置的更多相关文章

  1. mysql、mariadb安装和多实例配置

    本文目录:1. mysql单实例安装 1.1 rpm安装mysql 1.2 通用二进制包安装mysql 1.2.1 初始化数据库 1.2.2 安装后的规范化操作 1.3 编译安装 1.3.1 编译安装 ...

  2. centos7 安装mariadb最新版并配置

    打开http://mirrors.aliyun.com/,查找mariadb,然后拼装地址http://mirrors.aliyun.com/mariadb/yum打开,点开你想要的版本,选择你的操作 ...

  3. mariadb安装配置

    CentOS 7安装MariaDB 详解以及相关配置 第一步:添加 MariaDB yum 仓库 首先在CentOS操作系统中/etc/yum.repos.d/目录下添加 MariaDB 的YUM配置 ...

  4. MariaDB的安装及相关配置

    MariaDB的安装及相关配置 安装 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB systemctl start mar ...

  5. centos7 Mycat/MySQL/MariaDB安装部署

    使用yum安装MySQL详细步骤 安装mysql源 centos系统中不包含mysql的源,需要先安装mysql源 1.官网下载源.使用图形界面操作系统进入mysql官网,进入以下界面. 2.在Cen ...

  6. centos 7 mariadb安装

    centos 7 mariadb安装 1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB sy ...

  7. 虚拟机下安装Centos7并配置Apache+PHP+Mysql+phpmyadmin+wordpress

    一.安装Apache yum install httpd 安装成功后,Apache操作命令: systemctl start httpd //启动apache systemctl stop httpd ...

  8. Mysql MariaDB安装

    1.安装 本人使用的是CentOS 7 ,默认yum安装,但默认yum安装版本有点低,可根据需要选择升级,我这里选择先升级再安装. 更新yum //更新yum包 yum -y update 配置yum ...

  9. LAMP环境搭建备忘 -- MariaDB 安装(三)

    因为 MySQL 的一些原因,在 Linux 平台上的开源数据库渐渐被 MariaDB 取代. MariaDB 安装命令如下图 安装成功后,接下来就启动这个数据库服务 我们还需要对数据库做一些初始化的 ...

随机推荐

  1. dentry path_lookat dput

    https://www.ibm.com/developerworks/cn/linux/l-cn-usagecounter/index.html https://blog.csdn.net/young ...

  2. Python:matplotlib绘制线条图

    线型图是学习matplotlib绘图的最基础案例.我们来看看具体过程:  下面我们将两条曲线绘制到一个图形里:   可以看到这种方式下,两个线条共用一个坐标轴,并且自动区分颜色. plot方法的核心是 ...

  3. Detected problems with API compatibility(visit g.co/dev/appcompat for more info)

    应用开启了debug模式导致Android 9提示如此,使用release模式即可解决.

  4. Jenkins: 1.x升级到2.x

    停止Jenkins Service 用2.x的"jenkins.war"替换安装目录下的"jenkins.war" 启动Jenkins Service 打开je ...

  5. hdu-2328(暴力枚举+kmp)

    题意:给你n个字符串,问你这n个串的最长公共子串 解题思路:暴力枚举任意一个字符串的所有子串,然后暴力匹配,和hdu1238差不多的思路吧,这里用string解决的: 代码: #include< ...

  6. CrawlSpider爬取拉钩

    CrawlSpider继承Spider,提供了强大的爬取规则(Rule)供使用 填充custom_settings,浏览器中的请求头 from datetime import datetime imp ...

  7. robotframework基本语法一

    *** Settings *** Library OperatingSystem #Settings:导入测试库,资源文件,变量文件,为创建测试套件和test cases定义元数据 *** Varia ...

  8. MT【271】一道三角最值问题

    若不等式$k\sin^2B+\sin A\sin C>19\sin B\sin C$对任意$\Delta ABC$都成立,则$k$的最小值为_____ 分析:由正弦定理得$k>\dfrac ...

  9. 「AtCoder Grand018A」Getting Difference(GCD)

    题目链接A - Getting Difference 题意 有n(1~\(10^5\))个数\(A_i\) (1~\(10^9\)),每次选两个数,将它们的差的绝对值加入这堆数.问k(1~\(10^9 ...

  10. 「POJ 1135」Domino Effect(dfs)

    BUPT 2017 Summer Training (for 16) #3G 题意 摆好的多米诺牌中有n个关键牌,两个关键牌之间有边代表它们之间有一排多米诺牌.从1号关键牌开始推倒,问最后倒下的牌在哪 ...