一、数据库服务器
1. 基本概念
- 数据库
- 数据库管理系统(DBMS)
- 数据库系统(DBS)
- 数据库服务器
- 数据库分为三种基本形式:
- 关系型数据库
- 层次型数据库
- 网状型数据库
- 运行在 Linux 上的关系型数据库管理系统主要产品:
- 企业级服务器:Oracle、MongoDB、DB2、HBase
- 中小型服务器:MariaDB/MySQL、PostgresQL
- 全球数据库产品排名网站地址:http://db-engines.com/en/ranking
MariaDB 是 MySQL 的替代品
采用 GPL 授权许可,主要由开源社区在维护。
开发该软件的原因是 MySQL 被 Oracle 公司收购后,更新升级速度缓慢且有面临闭源和收费的可能,导致了各个大公司(如,Facebook、Google、阿里巴巴)都开发了自己定制的 MySQL 版本,其中,
由 MySQL 的创始人麦克尔·维德纽斯(Michael Widenius)主导开发的 MariaDB 最为著名。
MariaDB 名称来自麦克尔·维德纽斯的女儿玛丽亚(Maria)的名字,MariaDB 是目前在开源社区中最受欢迎的一款免费、开源的数据库管理系统。
MariaDB具有功能强、体积小、速度快、成本低、开放源代码、安全可靠等优点,相对于 MYSQL 在功能上有很多扩展特性,比如微秒的支持、线程池、子查询优化、组提交、进度报告等。
2. MariaDB 服务器的安装与运行管理
从 RHEL7 版本开始,系统盘中自带的数据库由 MySQL 改为 MariaDB,默认情况下系统未安装 MariaDB 程序包
- MariaDB 的安装:
yum -y groupinstall mariadb mariadb-client
- MariaDB 服务的启动、停止、重启、重新加载和状态查询的命令一般格式如下:
systemctl start|stop|restart|reload|status mariadb.service
- 设置开机自动启动或不启动 MariaDB 服务的命令一般格式如下:
systemctl enable|disable mariadb.service
- 查看 MariaDB 进程的命令如下:
ss -tulpn | grep mysql
tcp LISTEN 0 50 *:3306 *:* users:((“mysqld”,pid=3384,fd=14))
3. 运行 MariaDB 安全配置向导
为了提高 MariaDB 的安全性,在 MariaDB 完成安装和启动服务后,一定要运行一次安全配置向导命令 mysql_secure_installation,该命令会以人机交互的方式完成有关初始化设置。
[root@localhost ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
......
Enter current password for root (enter for none): // 首次运行时 root 用户密码为空,直接回车
......
Set root password? [Y/n] y // 是否设置 root 用户密码,输入 y 并回车或直接回车
New password: // 设置 root 用户的密码
Re-enter new password: // 再输入一次设置的密码
......
Remove anonymous users? [Y/n] y // 是否删除匿名用户,生产环境建议删除,直接回车
......
Disallow root login remotely? [Y/n] y // 是否禁止 root 远程登录,根据需求选择 Y/n 并回车
......
Remove test database and access to it? [Y/n] y // 是否删除 test 数据库,直接回车
......
Reload privilege tables now? [Y/n] y // 是否重新加载权限表,直接回车
......
4. 更改管理员账号的密码
默认情况下,root 用户的初始密码为空。root 账号具有管理 MariaDB 的最高权限,为安全起见,应定期修改其密码,其命令格式为:mysqladmin -u 用户名 [-h 服务器主机名] [-p]password '新密码'
5. 修改配置文件
配置 MariaDB 的登录方式及侦听的网络接口
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
...... // 省略若干行
skip-networking=0 // 值为 0 时,支持本地和远程登录; 值为1时,仅允许本地登录
bind-addrecss=192.168.1.1 // 侦听的网络接口(添加此行无法启动服务器是为什么?????)
6. MariaDB 的登录及退出
命令:mysql [-h 主机名] -u 用户名 -p[用户密码]
-h 主机名——用于指定被登录的主机,若未指定则表示 localhost。
-u 用户名——用于指定登录的用户名。
-p[用户密码]——用于指定登录的用户密码,“-p” 与其后的密码符号不能留空。
7. 配置支持汉字数据处理
7.1 修改配置文件
编辑 /etc/my.cnf、/etc/my.cnf.d/client.cnf、/etc/my.cnf.d/mysql-clients.cnf 等配置文件,设置默认的汉字字符集为 utf8 →重启 Mariadb 服务使修改后的配置生效。
配置 MariaDB 支持汉字数据处理
[root@localhost ~]# vim /etc/my.cnf
[mysqld] // 服务器端配置小节
datadir=/var/lib/mysql // 设置数据库或表的默认存储位置
socket=/var/lib/mysql/mysql.sock
symbolic-links=1 // 数据库或表可以存储在 datadir 之外的分区或目录
default-storage-engine=INNODB // 添加本行及以下2行
character-set-server=utf8 // 设置服务器默认字符集
collation-server=utf8_general_ci
[root@localhost ~]# vim /etc/my.cnf.d/client.cnf
[client]
default-character-set=utf8 // 添加此行:设置客户端默认字符集
[root@localhost ~]# vim /etc/my.cnf.d/mysql-clients.cnf
[mysql]
default-character-set=utf8 // 添加此行:设置数据库默认字符集
[root@dyzx ~]# systemctl restart mariadb.service
7.2 查看数据库的字符集
以 root 账号登录本机的 MariaDB 服务器 → 使用 show 命令查看数据库的字符集已全部改成 utf8 。
[root@dyzx ~]# mysql -h localhost -u root -p //从本地登录数据库服务器
Enter password:
...... // 省略若干行
MariaDB [(none)]> show variables like 'char%'; show variables like 'coll%'; //查看字符集
+-----------------------------+----------------------------+
| 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/ |
+-----------------------------+----------------------------+
8 rows in set (0.00 sec)
+-----------------------+-----------------+
| Variable_name | Value |
+-----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+-----------------------+-----------------+
3 rows in set (0.00 sec)
二、使用 SQL 命令管理数据库
mysql 安装后默认会创建三个数据库 information_schema、mysql 和 test,其中名为 “mysql” 的数据库很重要,它里面保存有 MYSQL 的系统信息,用户修改密码和新增用户,实际上就是针对该数据库中的有关数据表进行操作。
1. 数据库管理命令
SQL 命令 | 功能 |
---|---|
show databases; | 查看服务器中当前有哪些数据库 |
select database(); | 查看当前数据库 |
select user(); | 查看当前用户 |
use 数据库名; | 选择所使用的数据库 |
create database 数据库名; | 创建数据库 |
drop database 数据库名; | 删除指定的数据库 |
2. 数据表结构管理
SQL 命令 | 功能 |
---|---|
create table 表名 (字段列表); | 在当前数据库中创建表 |
show tables; | 显示当前数据库中有哪些表 |
describe [数据库名.]表名; | 显示当前或指定数据库中指定表的结构(字段)信息 |
drop table[数据库名.]表名; | 删除当前或指定数据库中指定的表 |
3. 记录的查询、插入、更新与删除
SQL 命令 | 功能 |
---|---|
select 字段名1, 字段名2……from 表名 where 条件表达式; | 查询指定表中符合条件的记录 |
select * from 表名; | 查询当前数据库的指定表中的记录 |
chaxuinsert into 表名(字段1, 字段2, …….) values (字段1的值, 字段2的值 …….); | 插入新的记录到指定的表中 |
update 表名 set 字段名1=字段值1[,字段名2=字段值2] where 条件表达式; | 更新指定表中的符合条件的记录 |
delete from 表名 where 条件表达式; | 删除指定的表中满足条件的记录 |
delete from 表名; | 清空当前数据库指定表内的所有记录 |
三、管理数据库用户与访问权限
1. 创建数据库用户
命令格式:create user 用户名@来源地址 identified by [password] '密码';
2. 授权给数据库用户
命令格式:grant 权限列表 on 数据库名.表名 to 用户名@来源地址
权限列表:是以逗号分隔的权限符号,主要权限符号见表:
| 权限符号 | 权限 | 权限符号 | 权限 |
| ——– | ————————– | ——– | ———————————— |
| select | 允许读取(查询)表中任意字段 | insert | 允许向指定表中插入记录 |
| update | 允许更新指定表中任意字段 | delete | 允许删除指定表中的记录 |
| index | 允许创建或删除指定表的索引 | create | 允许创建新的数据库和表 |
| alter | 允许修改表的结构 | grant | 允许将自己拥有的某些权限授予其他用户 |
| drop | 允许删除现存的数据库和表 | process | 允许查看当前执行的查询 |
| reload | 允许重新装载授权表 | all | 具有全部权限 |
3. 查看数据库用户的权限
命令格式:show grants for 用户名@'来源地址';
4. 撤销数据库用户的权限
命令格式: revoke 权限列表 on 数据库名.表名 from 用户名@域名或IP地址
四、数据库的备份与恢复
1. 备份(导出)数据
命令格式:mysqldump -u 用户名 -p [密码] [选项] [数据库名] [表名] > /备份路径/备份文件名
常用选项:
–all-databases——备份服务器中的所有数据库内容。
–opt——对备份过程进行优化,此项为默认选项。
–no-data——仅备份数据库结构,不备份数据内容(记录)。
2. 恢复(导入)数据
命令格式:mysql -u root -p [数据库名] < /备份路径/备份文件名