之前一直在使用
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.52sudo apt-get install mariadb-server2.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-commonsudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943dbsudo 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 maindeb-src http://mirrors.tuna.tsinghua.edu.cn/mariadb/repo/10.0/ubuntu trusty main安装mariadb数据库
sudo apt-get updatesudo apt-get install mariadb-server参见 https://mariadb.com/kb/en/mariadb/installing-mariadb-deb-files/
3 配置mariadb
方法1: 用SET PASSWORD命令
mysql -u rootmysql> 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 rootmysql> use mysql;mysql> UPDATE user SET Password = PASSWORD("newpass") WHERE user = "root";mysql> FLUSH PRIVILEGES;在丢失root密码的时候,可以这样
mysqld_safe --skip-grant-tables&mysql -u root mysqlmysql> UPDATE user SET password=PASSWORD("new password") WHERE user="root";mysql> FLUSH PRIVILEGES;service mysql startnetstat -tulnp | grep mysql或者
service mysql status本地机器登陆
mysql -uroot -pyourpassword如果是本机,那可以直接使用上面的命令登录,当然,需要输入密码. 如果是远程机器(与MariaDB 所处不同的机器),那么可能需要如下的形式:其中xxx.xxx.xxx.x 为MariaDB所在机器的IP 或者机器名
mysql -h xxx.xxx.xxx.x -P 3306 -uroot -pyourpasswordMariaDB [(none)]> use mysqlMariaDB [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 10reference 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是可以访问拉.但是从安全角度出发,是不允许关闭防火墙的.
本文永久更新链接地址