CSDN GitHub
Ubuntu 14.04(Trusty)安装MariaDB 10数据库 AderXCoding/system/tools/mariadb



本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,转载请注明出处

之前一直在使用MysqL,但是后来对比之后还是选择了MariaDB,现在想在自己的服务器和本子上安装上MariaDB,但是Ubuntu14.04源中的版本仍然是5.5,想在本子上装个新的体验下,网上看了写教程,都好老了,很少有装10的,少数有的也都是直接沾了PPA源,但是源从哪里来的也是一头雾水,因此有了这篇博客, 水平有限,欢迎交流指正.

1 MariaDB介绍

1.1 MariaDB数据库

MariaDB 数据库管理系统是 MysqL 的一个分支,MariaDB努力想成为那些寻求专业的、健壮的、可扩展的、可靠的的 sql 数据库服务的理想选择. 为了达成这个目标,MariaDB 基金会与开源社区的用户和开发者以自由和开源软件的精神共同开发着 MariaDB 数据库管理系统,并且以保证可靠性的前提下来开发新的功能的方式来发布这个软件.

MariaDB数据库管理系统主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MysqL,包括API和命令行,使之能轻松成为MysqL的代替品。

在存储引擎方面,使用XTradB(英语:XTradB)来代替MysqLInnoDB. MariaDB基于事务的Maria存储引擎,替换了MysqLMyISAM存储引擎,它使用了PerconaXTradB,InnoDB的变体

1.2 诞生

MariaDBMysqL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MysqL AB卖给了SUN,此后,随着SUN被甲骨文收购,MysqL的所有权也落入Oracle的手中. MariaDB名称来自Michael Widenius的女儿Maria的名字.

MysqL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MysqL,实在很不靠谱,于是决定另开分支,这个分支的名字叫做MariaDB.

MariaDBMysqL在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同. 目前MariaDB是发展最快的MysqL分支版本,新版本发布速度已经超过了Oracle官方的MysqL版本。

Oracle控制下的MysqL开发,有两个主要问题 :

  1. MysqL核心开发团队是封闭的,完全没有Oracle之外的成员参加. 很多高手即使有心做贡献,也没办法做到.

  2. 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

确认 <code></p>MariaDB</code> 已经启动

或者

service MysqL status

确认 <code></p>MariaDB</code> 已经启动

  • 登陆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的五大理由

CentOS6.5上安装MariaDB

CentOS安装并设置MariaDB

Ubuntu 14.04(Trusty)安装MariaDB 10数据库的更多相关文章

  1. 详解前端HTML5几种存储方式的总结

    本篇文章主要介绍了前端HTML5几种存储方式的总结 ,主要包括本地存储localstorage,本地存储sessionstorage,离线缓存(application cache),Web SQL,IndexedDB。有兴趣的可以了解一下。

  2. PhoneGap / iOS上的SQLite数据库 – 超过5mb可能

    我误解了什么吗?Phonegap中的sqlitedbs真的有5mb的限制吗?我正在使用Phonegap1.2和iOS5.解决方法您可以使用带有phonegap插件的原生sqliteDB,您将没有任何限制.在iOS5.1中,Websql被认为是可以随时删除的临时数据…

  3. ios – 领域:如何获取数据库的当前大小

    是否有RealmAPI方法使用RealmSwift作为数据存储来获取我的RealmSwift应用程序的当前数据库大小?

  4. ios – Realm – 无法使用现有主键值创建对象

    我有一个对象有许多狗的人.应用程序有单独的页面,它只显示狗和其他页面显示人的狗我的模型如下我有人存储在Realm中.人有详细页面,我们取,并显示他的狗.如果狗已经存在,我会更新该狗的最新信息并将其添加到人的狗列表中,否则创建新狗,保存并将其添加到人员列表中.这适用于coredata.在尝试用他的狗更新人时,领域会抛出异常无法使用现有主键值创建对象解决方法这里的问题是,即使你正在创建一个全新的Rea

  5. ios – UIWebView中的WebSQL / SQLite数据库的最大大小(phonegap)

    我知道一般来说,Web应用程序的本地存储空间有5MB的限制.本地网页浏览应用程式是否也有这个限制?

  6. ios – Firebase离线存储高级 – 手动同步和进度信息

    >我可以提供一个捆绑数据库–安装App后我可以已经离线查询了Firebase数据?然后我有另一个关于Firebase的主要问题:>JSON存储是伟大的–但是这样我们不关心一个独特的结构,我们必须注意这一点插入总是正确的数据集?我从来没有试图显示实际的进展,但是当您从firebase中检索数据时,始终会在成功检索数据时调用onDataChange方法.https://firebase.google.com/docs/database/android/retrieve-data#read_data_onceC

  7. ios – 如何处理多用户数据库

    我的应用程序就像很多应用程序–它有一个用户输入用户名和密码的登录屏幕,以及登录按钮我的应用程序还使用CoreData来保存大多数用户的业务对象,当然也是用户特定的.我也有一个登出按钮来启用切换用户.这不会发生很多,但仍然是必要的).现在如果不同的用户登录,我需要获取他的具体数据.但是我该如何做呢?

  8. ios – Swift从Firebase数据库中获取特定价值

    我正在尝试从Firebase数据库中获取特定值.我看了一些像谷歌这样的文件,但我做不到.这是数据库的JSON文件:SWIFT代码:我想获得用户的电子邮件价值,而不是每个人.我怎样才能做到这一点?解决方法在您的代码中,快照将包含子值的字典.要访问它们,请将snapshot.value转换为Dictionary,然后访问各个子项是一个快照

  9. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  10. ios – Realm Swift:在卸载应用程序后是否可以保留数据库?

    使用realmswift,即使从设备上卸载应用程序,是否可以在设备内存中保留和维护应用程序的领域数据库文件?非常感谢您的帮助.解决方法删除应用程序时,应用程序的所有文件都是剩余的.iOS应用程序是沙盒.这意味着每个应用程序在磁盘中都有自己的空间,并有自己的目录,这些目录充当应用程序及其数据的主页.从iPhone删除应用程序会删除此沙箱,删除与该应用程序关联的所有数据.

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部