mariaDB
MariaDB 是MySQL的一个分支,从MySQL被甲骨文收购之后开发的一个替代品,目前全部兼容MySQL。
MariaDB 是一个采用 Maria 存储引擎的 MySQL 分支版本,是由原来 MySQL 的作者 Michael Widenius 创办的公司所开发的免费开源的数据库服务器。
由于满MySQL被Oracle收购后的日渐封闭与缓慢的更新,众多Linux发行版逐渐抛弃了这MySQL数据库,而转向了MariaDB
CentOS 7/RHEL7中,默认已经不再提供mysql的安装源,取而代之的是mysql的原开发者另起炉灶开发的mariadb数据库,不仅完全兼容mysql而且比mysql更加强大。
首先安装mariadb
#yum –y install mariadb mariadb-server
拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)
cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
启动mariadb服务并开机自动运行
Mariadb数据库仍然默认使用tcp 3306端口。
打开防火墙服务
安装完后,开始设置Mariadb数据库
#/usr/bin/mysql_secure_installation
输入上述命令后,按照提示操作
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we‘ll need the current
password for the root user. If you‘ve just installed MariaDB, and
you haven‘t set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): 安装后默认没有root密码,直接回车
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] Y
New password: 输入root的新密码
Re-enter new password: 新密码确认
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] 删除匿名用户 Y
... Success!
Normally, root should only be allowed to connect from ‘localhost‘. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] 关闭root远程登录 Y
... Success!
By default, MariaDB comes with a database named ‘test‘ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] 删除test数据库 Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] 确定以上所有操作 Y
... Success!
Cleaning up...
All done! If you‘ve completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
或执行mysqladmin为MariaDB数据库账户root设置密码
Mariadb安装完毕后,管理员用户是root密码默认为空,可以执行mysqladmin设置账户密码
如何重设管理员账户root的密码
情况1:在已知mariadb数据库的ROOT用户密码的情况下,修改密码的方法:
1、 在SHELL环境下,使用mysqladmin命令设置:mysqladmin –u root –p password “新密码”回车后要求输入旧密码
2、 在MariaDB[(none)]>环境中,使用update命令,直接更新mysql库user表的数据,不过改完之后需要刷新:
update mysql.user set password=password(‘新密码’) where user=’root’;
flush privileges;
注意:mariadb的sql语句要以分号”;”结束
3、 在MariaDB[(none)]>环境中,使用grant命令,修改root用户的授权权限。
grant all on *.* to [email protected]’localhost’ identified by ‘新密码’;
4、 在MariaDB里面,可以使用 set password重置
情况2:如查忘记了MariaDB数据库的ROOT用户的密码,又如何做呢?方法如下:
1、 关闭当前运行的mariadb服务程序:
2、 使用mysqld_safe脚本以安全模式(不加载授权表)启动mariadb服务
/usr /bin/mysqld_safe --skip-grant-table &
3、 使用空密码的root用户登录数据库,重新设置ROOT用户的密码
#mysql -u root
MariaDB[(none)]>Update mysql.user set password=password(‘新密码’) where user=’root’;
MariaDB[(none)]> flush privileges;
到此Mariadb安装并设置完毕,接下来可以测试一下:执行mysql命令连接mariadb数据库
如何更改mariadb默认的数据文件存储目录
mariadb默认的数据文档存储目录为/var/lib/mysql
要想将默认创建目录改成/data,需要一下操作:
1、创建/data目录
#mkdir /data
2、把mariadb服务停掉:
#systemctl stop mariadb.service
3、把/var/lib/mysql整个目录复制到/data
#cp -r /var/lib/mysql/* /data/
这样就把MySQL的数据文档复制到了/data下
4、编辑mariadb的配置文档/etc/my.cnf
在[client]下添加:
把原来的socket=/var/lib/mysql/mysql.sock,前边加#注释掉,添加socket=/data/mysql.sock(以防有问题再改回来)。
在[mysqld]下添加:
把原来的socket=/var/lib/mysql/mysql.sock,前边加#注释掉,添加socket=/data/mysql.sock(以防有问题再改回来)。
datadir =/data/ (这行没有,需要自己加上)
保存后退出。
#chown -R mysql:mysql /data
5、重新启动mariadb服务
systemctl start mariadb.service。
注:在my.cnf文件中添加skip-networking=1表示数据库只能被 localhost 访问。
skip-networking 只允许通过一个套接字文件(Unix/Linux系统)或通过命名管道(Windows系统)进行本地连接,不允许ICP/IP连接; 这提高了安全性,但阻断了来自网络的外部连接和所有的Java客户程序(Java客户即使在本地连接里也使用TCP/IP)。
现在可以开始用mariadb了,先看看基本的命令操作
显示数据库
创建数据库
创建数据库用户并授予权限
如果要撤销权限可以使用revoke命令
注:所有的权限可以通过show priviledges\G 显示
还可以通过下面的方式创建用户并授予权限
查看当前登录用户。
查看一下mysql数据库里面的user表
进入数据库
创建一个表,指定主键和各字段的名字类型,并向表中插入数据。
更新数据
复制一张表
更改表的结构,增加一个字段
删除表
创建另外一张表,和第一张表绑定主键外键,级联删除
插入数据
做个简单的多表查询
从主表里面删除一行数据,确认级联删除有效
最后,看看数据库的备份和还原
Mariadb数据库的备份分为:冷备和热备
冷备份就是直接备份 /var/lib/mysql下面的数据库文件了(如cp、tar、dump、dd等)
热备可以通过 mysqldump实现,mysqldump 比较常用的,比较适合备份少量数据。可以实现远程备份表,数据库。
命令格式:
#mysqldump –u root –p [密码] [options] [数据库名] [表名] > /备份路径/备份文件名
备份整个数据库
查看一下这个生成的sql文件,本质是先删除现有表,然后创建一个新的,然后插入数据
备份数据库中指定的表
备份所有数据库
恢复数据库
模拟破坏数据
用备份还原数据
验证:
查看数据是否恢复,如下图所示:
有关mariadb的其他备份工具可以查询相关资料