侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

以通用二进制方式安装并配置MariaDB5.5

zze
zze
2020-01-06 / 0 评论 / 0 点赞 / 433 阅读 / 5711 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

介绍

MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
MariaDB 的目的是完全兼容MySQL,包括 API 和命令行,使之能轻松成为 MySQL 的代替品。M
ariaDB 由 MySQL 的创始人麦克尔·维德纽斯主导开发,他早前曾以 10 亿美元的价格,将自己创建的公司 MySQL 卖给了 SUN,此后,随着 SUN 被甲骨文收购,MySQL 的所有权也落入 Oracle 的手中。
MariaDB 名称来自麦克尔·维德纽斯的女儿玛丽亚(英语:Maria)的名字。
MariaDB 直到 5.5 版本,均依照 MySQL 的版本。因此,使用 MariaDB 5.5 的人会从 MySQL 5.5 中了解到 MariaDB 的所有功能。从 2012 年 11 月 12 日起发布的 10.0.0 版开始,不再依照 MySQL 的版号。10.0.x 版以 5.5 版为基础,加上移植自 MySQL 5.6 版的功能和自行开发的新功能。
在存储引擎方面,10.0.9 版起使用 XtraDB(名称代号为 Aria)来代替 MySQL 的 InnoDB。MariaDB 的 API 和协议兼容 MySQL,另外又添加了一些功能,以支持本地的非阻塞操作和进度报告。这意味着,所有使用 MySQL 的连接器、程序库和应用程序也将可以在 MariaDB 下工作。在此基础上,由于担心甲骨文 MySQL 成为的一个更加封闭的软件项目,Fedora 的计划在 Fedora 19 中的以 MariaDB 取代 MySQL。
综上所述:MariaDB 数据库管理系统是 MySQL 的一个分支。是由 MySQL 之父 Michael 开发的。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

MariaDB 官网:https://mariadb.org

MariaDB的新特性

1、插件式存储引擎:存储管理器有多种实现版本,功能和特性可能均略有差别,用户可根据需要灵活选择;
2、更多的存储的存储引擎,MyISAM --> Aria,InnoDB --> XtraDB;
3、诸多扩展和新特性;
4、提供了较多测试组件;
5、truly open source;

存储引擎也称之为“表类型”;

安装与配置

CentOS 7 自身就已经提供了 MariaDB,所以下面以通用二进制格式的安装包在 CentOS 6 上安装 MariaDB 为例。

微信扫描文章首部二维码或搜索 zze_coding 关注我的微信公众号发送 #mariadb 即可获取 MariaDB 5.5.46 安装包资源。

1、以免产生冲突,先卸载 MySQL 相关的程序:

$ yum remove mysql* -y

2、创建 mysql 用户:

$ groupadd -r -g 306 mysql
$ useradd -r -g 306 -u 306 mysql

3、解压 MariaDB 安装包到 /usr/local 下:

$ tar zxvf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local/

4、以相对路径方式创建 MariaDB 的软链接 mysql

$ cd /usr/local/
$ ln -s mariadb-5.5.46-linux-x86_64/ mysql

5、把安装包所有内容的属主改为 root,属组改为 mysql:

$ cd mysql
$ chown -R root:mysql ./*

6、使用 MariaDB 提供的安装工具安装并指定安装用户和数据存放目录:

$ mkdir /mydata
$ ./scripts/mysql_install_db --user=mysql --datadir=/mydata
$ ls /mydata/
aria_log.00000001  aria_log_control  mysql  performance_schema  test

还可通过 mysql_install_db--default-extra-file 来指定 MariaDB 的额外配置文件。

7、添加 mysql 服务:

$ cp support-files/mysql.server /etc/init.d/mysqld
$ chkconfig --add mysqld
$ chkconfig --list mysqld
mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off

8、准备 mysql 的配置文件:

$ mkdir /etc/mysql
$ cp support-files/my-large.cnf /etc/mysql/my.cnf

配置格式:类 ini 格式,为各程序均通过单个配置文件提供配置信息;
配置文件查找次序:/etc/my.cnf --> /etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf

9、修改 /etc/mysql/my.cnf 配置文件,在 mysqld 节点下添加如下配置:

datadir=/mydata
innodb_file_per_table=on
skip_name_resolve=on

10、测试启动 mysql:

$ service mysqld start
Starting MySQL.. SUCCESS! 

11、环境变量中添加 mysql 可执行程序的路径:

export PATH="/usr/local/mysql/bin/:$PATH"

MariaDB程序的组成

客户端:

  • mysql:CLI交互式客户端程序;
  • mysqldump, mysqladmin 等;

服务端:

  • mysqld_safe:线程安全模式;
  • mysqld:标准模式;
  • mysqld_multi:多实例模式;

服务器监听的两种socket地址

  • ip socket:监听在 tcp 的 3306 端口,支持远程通信;
  • unix sock:监听在 sock 文件上(/tmp/mysql.sock/var/lib/mysql/mysql.sock),仅支持本地通信,此种方式通信时 server 地址只能是 localhost127.0.0.1

命令行交互式客户端程序:mysql

mysql 命令的常用选项如下:

  • -uUSERNAME:用户名,默认为 root;
  • -hHOST:服务器主机;,默认为 localhost;
  • -pPASSWORD:用户的密码, 默认为空密码;

注意:MariaDB 用户账号由两部分组成:'USERNAME'@'HOST',其中 HOST 用于限制此用户可通过哪些主机远程连接 MariaDB 服务;
HOST 支持使用通配符:

  • %: 匹配任意长度的任意字符,例:172.16.0.0/16, 172.16.%.%
  • _: 匹配任意单个字符;

直接执行 mysql 命令即可本地连接上 MariaDB 服务:

image.png

MariaDB 命令提示符下可使用的命令有两种,一种是客户端命令,另一种是服务端命令。

  • 客户端命令:在客户端本地执行的命令,可使用 help 命令查看,每个命令都完整形式和简写格式。
  • 服务端命令:它的作用是通过 mysql 协议发往服务器执行并取回结果,每个命令都必须命令结束符号,默认为分号(';');

常用查看操作

  • 查看支持所有字符集:SHOW CHARACTER SET;
  • 查看支持所有排序规则:SHOW COLLATIONS;
  • 查看所有数据库:SHOW DATABASES;
  • 查看所有的引擎:SHOW ENGINES;
  • 查看数据库中的所有表:SHOW TABLES [FROM db_name];
  • 查看表结构:DESC [db_name.]tb_name

安全初始化:mysql_secure_installation

按上述方式安装完 mysql 后默认是没有密码的,可以通过 mysql_secure_installation 程序来执行安全相关初始化操作。
执行 mysql_secure_installation 命令后会有如下交互式提示信息:

$ mysql_secure_installation
# 输入 root 用户当前密码
Enter current password for root:
# 是否重新设定 root 用户的密码
Set root password?
# 是否移除匿名用户
Remove anonymous users?
# 是否禁止 root 用户远程登录
Disallow root login remotely? 
# 是否移除测试库
Remove test database and access to it?
# 是否重载权限表
Reload privilege tables now?
0

评论区