mariadb 的安装及基本配置

mariadb 的由来

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。Red Hat Enterprise Linux/CentOS 7.0 发行版已将默认的数据库从 MySQL 切换到 MariaDB。

mariadb-server 与连接器

进入 mariadb 的官网下载链接 https://mariadb.org/download/
在这里插入图片描述
我翻译一下:

  • MariaDB Server 是世界上最流行的开源关系数据库之一,并且在主流 Linux 发行版的标准仓库中都有。可以使用操作系统的包管理器查找 mariadb-server。或者,您也可也使用如下资源
  • MariaDB 基金会为 MariaDB Server 也提供了最流行的连接器,以供下载。

mariadb 的卸载

我这边之前已经手动安装过 mariadb 了。这里为了演示安装,需要用 rpm 命令进行卸载。

rpm 常用参数

  • -a 查询所有文件
  • -e 卸载
  • -i 安装
  • -q 查询
  • -u 升级
  • -h 显示安装进度
  • -R 查看依赖
  • –replacepkgs 重新安装rpm包
  • –percent 在软件安装时显示百分比

开始使用 rpm -e mariadb 卸载 mariadb,提示说 mariadb-server 依赖于 mariadb。
因此需要先卸载 mariadb-server,再卸载 mariadb。

可以使用 rpm -qR mariadb-server 查看依赖
在这里插入图片描述

使用 rpm -q mariadb 查询,可以发现该卸载的均已卸载完毕了。

在这里插入图片描述

安装 mariadb

老规矩,先用 Putty 连接虚拟机中的 centos

使用命令 ip addr | grep inet 查看 ip,然后使用 PuTTY 连接
在这里插入图片描述输入 yum install -y mariadb-server 安装 mariadb-server,它会自动安装其依赖的 mariadb

在这里插入图片描述

mariadb 的启停命令

  • 启动服务
    systemctl start mariadbservice mariadb start

  • 停止服务
    systemctl stop mariadbservice mariadb stop

  • 重启服务
    systemctl restart mariadbservice mariadb restart

  • 添加到开机启动
    systemctl enable mariadbchkconfig mariadb on

  • 设置密码
    mysqladmin -u root password 'xxxxxx'

  • 安全设置,以及修改数据库管理员密码
    mysql_secure_installation

配置 mariadb

安装完后 mariadb,接下来就要设置账号密码了。

如果使用 mysqladmin -u root password 'xxxxxxx' 或 mysql_secure_installation 来配置报了如下错误,原因就是服务没开启。
在这里插入图片描述输入 systemctl start mariadbservice mariadb start 启动服务,然后输入 mysql_secure_installation 配置密码。

mysql_secure_installation

  • 第一次要求输入密码,直接回车
    Enter current password for root (enter for none)

  • 第二次才是设置 root 密码
    Set root password? [Y/n]
    New Password
    Re-enter new password

  • 是否删除匿名用户。Y或回车
    Remove anonymous users? [Y/n]

  • 是否禁止 root 远程登录。我这边在本地测试,安全性要求不高,因此我选 n
    Disallow root login remotely? [Y/n]

  • 是否删除数据库。Y或回车
    Remove test databse and access to it? [Y/n]

  • 重新加载权限表。Y或回车
    Reload privilege tables now? [Y/n]
    在这里插入图片描述

启动 mariadb

mysql -uroot -p<password>

注意:-u和用户名、-p和密码之间均没有空格
在这里插入图片描述

最后键入 exit(带不带分号均可),即可正常退出。
在这里插入图片描述

配置字符集

进入 maridb 命令行后,键入 show variables like "character";show variables like "%collection%" 查看字符集
在这里插入图片描述

vi /etc/my.cnf

在 [mysqld] 标签下添加

init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

在这里插入图片描述

vi /etc/my.cnf.d/client.cnf

在 [client] 中添加

default-character-set=utf8

在这里插入图片描述

vi /etc/my.cnf.d/mysql-clients.cnf

在 [mysql] 中添加

default-character-set=utf8

在这里插入图片描述
全部配置完后,重启 mariadb
service mariadb restart ,这个命令会被重定向到 /bin/systemctl restart mariadb.service
在这里插入图片描述重启完,还是跟之前一样,进入 mariadb:mysql -uroot -p<password>

友情提示: 我之前打错命令,把 -uroot 打成 -rroot,结果出现 Ignoring query to other database 错误。所以如果出现该错误,请检查登录命令是否正确

重新输入 show variables like "%character%";show variables like "%collation%;" 查看字符集,可以发现现在基本都统一成了utf8了。
在这里插入图片描述

添加用户,设置权限

查看当前主机、用户、密码的哈希值

show database;
use mysql;
select host,user,password from user;

在这里插入图片描述

授权

grant <权限名数组 或 all privileges> on <数据库名>.<表名> to <用户名>@<允许的IP> identified by "<密码>";
flush privileges;

flush privileges 命令用来刷新权限,否则修改可能不生效。

在这里插入图片描述使用 show grants for '<用户名>' 可以查看授权时执行的命令
在这里插入图片描述

权限组有以下几种类型,可以用逗号隔开

  1. 数据库管理权限
权限名 权限所允许的操作
CREATE USER
FILE
GRANT OPTION
  1. 数据库对象操作权限
权限名 权限所允许的操作
ALTER
ALTER ROUTINE
CREATE
CREATE ROUTINE
CREATE TEMPORARY TABLE
CREATE VIEW
DELETE
DROP
EVENT
EXECUTE
INDEX
INSERT
LOCK TABLE
PEFERENCE
SELECT
SHOW VIEW
TRGGER
UPDATE
  1. 其它权限
权限名 权限所允许的操作
ALL [PRIVILEGES] 所有操作权限(但不包含GRANT)
USAGE 一个特殊的“无权限”

<数据库名>.<表名>表示授予权限的具体数据库或表

db.table 含义
. 授予该数据库服务器中所有数据库的权限
db.* 授予db数据库中所有表的权限
db.table 授予数据库db中table表的权限

允许用户登录的IP

host 含义
localhost 只允许该用户在本地登录,不能远程登录
% 允许在除本机之外的任何一台机器远程登录
192.168.1.1 具体IP表示仅允许用户从该特定的IP登录

刷新权限更变

flush privileges

创建用户

创建用户 create <用户名> identified by '<password>'
查询之前创建的用户 select user,host,password from mysql.user where user="<用户名>"
在这里插入图片描述

修改密码

update mysql.user set password = password('<密码>') where user = '用户名' and host = ‘%’;
flush privileges;

删除用户

drop user <用户名>@'%;'

该命令会删除用户以及对应的权限。执行完后,你会发现 mysql.user 表中的用户,以及 mysql.db 表中的权限记录都消失了。

数据库的备份与恢复

首先进入数据库 mysql -uroot -p<password>,创建一个测试数据库并填充数据

MariaDB [(none)]>create database test;
MariaDB [(none)]>use test;
MariaDB [(none)]>create table book(name char(20), author char(20));
MariaDB [(none)]>insert into book values('相对论', '爱因斯坦');
MariaDB [(none)]>insert into book values('爱情公寓', '韦正');
MariaDB [(none)]>select * from book;

在这里插入图片描述

备份

从 mariadb 的命令行,退出到 centos 命令行。

执行 mysqldump -u root -p --all-databases > /tmp/db.dump 将数据库备份到 /tmp.dump 中。
在这里插入图片描述

恢复的2种方法

备份后进入 mariadb 命令行,删除之前创建的 test 数据库。

[root@localhost ~]# mysql -u root -p
Mariadb [(none)] >  drop database test
Mariadb [(none)] >  show databases

在这里插入图片描述
此时执行 source /tmp/db.dump 即可恢复数据库了

在这里插入图片描述如果不在 mariadb 命令行中,也可以直接使用 mysql -uroot -p < /tmp/db.dump 命令进行恢复(从外部恢复,不会有任何回显)

在这里插入图片描述

发布了475 篇原创文章 · 获赞 573 · 访问量 191万+

猜你喜欢

转载自blog.csdn.net/chy555chy/article/details/104260214