共计 4387 个字符,预计需要花费 11 分钟才能阅读完成。
之前一直在使用MySQL
, 但是后来对比之后还是选择了MariaDB
, 现在想在自己的服务器和本子上安装上MariaDB
, 但是 Ubuntu 14.04 源中的版本仍然是 5.5, 想在本子上装个新的体验下, 网上看了写教程, 都好老了, 很少有装 10 的, 少数有的也都是直接沾了 PPA 源, 但是源从哪里来的也是一头雾水, 因此有了这篇博客, 水平有限, 欢迎交流指正.
1 MariaDB 介绍
1.1 MariaDB 数据库
MariaDB
数据库管理系统是 MySQL
的一个分支, MariaDB
努力想成为那些寻求专业的、健壮的、可扩展的、可靠的的 SQL
数据库服务的理想选择. 为了达成这个目标, MariaDB
基金会与开源社区的用户和开发者以自由和开源软件的精神共同开发着 MariaDB
数据库管理系统, 并且以保证可靠性的前提下来开发新的功能的方式来发布这个软件.
MariaDB
数据库管理系统主要由开源社区在维护, 采用 GPL 授权许可 MariaDB
的目的是完全兼容 MySQL
, 包括API
和命令行,使之能轻松成为 MySQL
的代替品。
在存储引擎方面,使用 XtraDB
(英语:XtraDB
)来代替MySQL
的InnoDB
. MariaDB
基于事务的 Maria
存储引擎, 替换了 MySQL
的MyISAM
存储引擎, 它使用了 Percona
的 XtraDB
, InnoDB
的变体
1.2 诞生
MariaDB
由 MySQL
的创始人 Michael Widenius
(英语:Michael Widenius
) 主导开发,他早前曾以 10 亿美元的价格,将自己创建的公司 MySQL AB
卖给了 SUN
, 此后, 随着SUN
被甲骨文收购, MySQL
的所有权也落入 Oracle
的手中. MariaDB
名称来自 Michael Widenius
的女儿 Maria
的名字.
MySQL
之父 Widenius
先生离开了 Sun
之后,觉得依靠 Sun/Oracle
来发展MySQL
, 实在很不靠谱, 于是决定另开分支, 这个分支的名字叫做MariaDB
.
MariaDB
跟 MySQL
在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同. 目前 MariaDB
是发展最快的 MySQL 分支版本,新版本发布速度已经超过了 Oracle
官方的 MySQL
版本。
在 Oracle
控制下的 MySQL
开发, 有两个主要问题 :
-
MySQL
核心开发团队是封闭的, 完全没有Oracle
之外的成员参加. 很多高手即使有心做贡献, 也没办法做到. -
MySQL
新版本的发布速度, 在Oracle
收购Sun
之后大为减缓.Widenius
有一个ppt
, 用数据比较了收购之前和之后新版本的发布速度. 有很多bugfix
和新的feature
, 都没有及时加入到发布版本之中.
以上这两个问题, 导致了各个大公司, 都开发了自己定制的 MySQL
版本, 包括Facebook
, Google
, 阿里巴巴等等.
MySQL
是开源社区的资产, 任何个人 / 组织都无权据为己有. 为了依靠广大 MySQL
社区的力量来更快速的发展MySQL
, 另外开分支是必须的。
MariaDB
默认的存储引擎是 Maria
, 不是MyISAM
. Maria
可以支持事务, 但是默认情况下没有打开事务支持, 因为事务支持对性能会有影响. 可以通过以下语句, 转换为支持事务的 Maria
引擎.
ALTER TABLE `tablename` ENGINE=MARIA TRANSACTIONAL=1;
2 安装 MariaDB
2.1 源中直接安装 MariaDB 5.5
Ubuntu 14.04
的源中已经包含了 MariaDB
数据库, 参见
http://packages.ubuntu.com/trusty/mariadb-server
因此可以直接安装, 版本是 5.5.52
sudo apt-get install mariadb-server
2.2 安装 MariaDB 10
- 下载源码包或者二进制包安装
如果想要安装新的版本, 需要上官网下载其安装包
下载地址 https://downloads.mariadb.org
- 使用官方提供的源进行安装
我们选择repository configuration tool
, 或者直接进入
https://downloads.mariadb.org/mariadb/repositories/#mirror=tuna
选择我们对应的系统和环境, 我的环境是Ubuntu 14.04
, 选择安装 MariaDB 10.0
, 选择的是清华大学的源
然后系统会提示我们需要添加的源和安装命令, 如下所示
添加源
sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirrors.tuna.tsinghua.edu.cn/mariadb/repo/10.0/ubuntu trusty main'
或者你可以手动的方式在 apt
源文件中写入 mariadb
源的信息, 你可以直接将如下信息写在 /etc/apt/sources.list
, 或者如果你不想污染源的主配置文件, 可以在 /etc/apt/sources.list.d
下, 创建名为 MariaDB sources.list
的源文件, 这个文件的名字可以随意, 但是一般为了便于区分, 还是以软件包的名字名为好, 比如我起的名字就是mariadb-ppa-trusty.list
, 创建完成后将如下信息写入
# MariaDB 10.0 repository list - created 2016-11-05 12:47 UTC
# http://downloads.mariadb.org/mariadb/repositories/
deb [arch=amd64,i386] http://mirrors.tuna.tsinghua.edu.cn/mariadb/repo/10.0/ubuntu trusty main
deb-src http://mirrors.tuna.tsinghua.edu.cn/mariadb/repo/10.0/ubuntu trusty main
安装 mariadb 数据库
sudo apt-get update
sudo apt-get install mariadb-server
参见 https://mariadb.com/kb/en/mariadb/installing-mariadb-deb-files/
3 配置 mariadb
- 若要更改或设置 MariaDB 密码
方法 1:用 SET PASSWORD 命令
mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
方法 2:用 mysqladmin
mysqladmin -u root password "newpass"
如果 root 已经设置过密码,采用如下方法
mysqladmin -u root password oldpass "newpass"
方法 3:用 UPDATE 直接编辑 user 表
mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
在丢失 root 密码的时候,可以这样
mysqld_safe --skip-grant-tables&
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
mysql> FLUSH PRIVILEGES;
- 启动 MariaDB
service mysql start
- 确认 MariaDB 已经启动
netstat -tulnp | grep mysql
或者
service mysql status
- 登陆 MariaDB
本地机器登陆
mysql -uroot -pyourpassword
如果是本机, 那可以直接使用上面的命令登录,当然,需要输入密码. 如果是远程机器(与 MariaDB 所处不同的机器),那么可能需要如下的形式:
其中 xxx.xxx.xxx.x 为 MariaDB 所在机器的 IP 或者机器名
mysql -h xxx.xxx.xxx.x -P 3306 -uroot -pyourpassword
- 简单 SQL 测试
MariaDB [(none)]> use mysql
MariaDB [mysql]> select count(*) from user;
+----------+
| count(*) |
+----------+
| 5 |
+----------+
1 row in set (0.00 sec)
想了解更多的关于 MariaDB 请访问如下的网站 : MariaDB documentation
4 参考资料
在 CentOS/RHEL/Scientific Linux 6 下安装 LAMP (Apache with MariaDB and PHP)
MariaDB Proxy 读写分离的实现
Linux 下编译安装配置 MariaDB 数据库的方法
CentOS 系统使用 yum 安装 MariaDB 数据库
安装 MariaDB 与 MySQL 并存
Ubuntu 上如何将 MySQL 5.5 数据库迁移到 MariaDB 10
reference documents
关于远程访问及防火墙设置请参考以下
笔者在一个实际的项目中需要 MYSQL 远程访问.
情景: 安装好 Mysql, 本地访问正常, 很奇怪局域的机器都无法访问该服务器上的 MYSQL 数据库.
经过资料查找
原来 Mysql 默认是不可以通过远程机器访问的, 通过下面的配置可以开启远程访问 .
在 MySQL Server 端:
登陆 MYSQL ..bin\ mysql -h localhost -u root -p
提示你输入密码, 输入密码后进入
mysql 命令模式,
mysql> use mysql;
mysql> GRANT ALL ON *.* TO admin@’%’ IDENTIFIED BY ‘admin’ WITH GRANT OPTION;
# 这句话的意思,允许任何 IP 地址(上面的 % 就是这个意思)的电脑 用 admin 帐户 和密码(admin)来访问这个 MySQL Server
# 必须加类似这样的帐户,才可以远程登陆。root 帐户是无法远程登陆的,只可以本地登陆
在服务器上, 使用 IP 地址和新的用户, 确实可以访问服务器, 但是远程机器还是无法访问到该 MYSQL.
经过关闭服务器上防火墙, 噢, MYSQL 是可以访问拉. 但是从安全角度出发, 是不允许关闭防火墙的.
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/136833.htm