赞
踩
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。Red Hat Enterprise Linux/CentOS 7.0 发行版已将默认的数据库从 MySQL 切换到 MariaDB。
进入 mariadb 的官网下载链接 https://mariadb.org/download/
我翻译一下:
我这边之前已经手动安装过 mariadb 了。这里为了演示安装,需要用 rpm 命令进行卸载。
rpm 常用参数
开始使用 rpm -e mariadb
卸载 mariadb,提示说 mariadb-server 依赖于 mariadb。
因此需要先卸载 mariadb-server,再卸载 mariadb。
可以使用 rpm -qR mariadb-server
查看依赖
使用 rpm -q mariadb
查询,可以发现该卸载的均已卸载完毕了。
老规矩,先用 Putty 连接虚拟机中的 centos
使用命令 ip addr | grep inet
查看 ip,然后使用 PuTTY 连接
输入
yum install -y mariadb-server
安装 mariadb-server,它会自动安装其依赖的 mariadb
如果是 ubuntu 可以通过 apt-cache 命令查看依赖
apt-cache depends mariadb-server
启动服务
systemctl start mariadb
或 service mariadb start
停止服务
systemctl stop mariadb
或 service mariadb stop
重启服务
systemctl restart mariadb
或 service mariadb restart
添加到开机启动
systemctl enable mariadb
或 chkconfig mariadb on
设置密码
mysqladmin -u root password 'xxxxxx'
安全设置,以及修改数据库管理员密码
mysql_secure_installation
安装完后 mariadb,接下来就要设置账号密码了。
如果使用 mysqladmin -u root password 'xxxxxxx'
或 mysql_secure_installation 来配置报了如下错误,原因就是服务没开启。
输入
systemctl start mariadb
或 service 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]
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 '<用户名>'
可以查看授权时执行的命令
权限名 | 权限所允许的操作 |
---|---|
CREATE USER | |
FILE | |
GRANT OPTION | |
权限名 | 权限所允许的操作 |
---|---|
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 |
权限名 | 权限所允许的操作 |
---|---|
ALL [PRIVILEGES] | 所有操作权限(但不包含GRANT) |
USAGE | 一个特殊的“无权限” |
db.table | 含义 |
---|---|
. | 授予该数据库服务器中所有数据库的权限 |
db.* | 授予db数据库中所有表的权限 |
db.table | 授予数据库db中table表的权限 |
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 中。
备份后进入 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
命令进行恢复(从外部恢复,不会有任何回显)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。