天天看点

mariadb 下载与安装编译

http://fanqie.blog.51cto.com/9382669/1708239

一、下载mariadb。

就是简单给大家提个醒吧,像我一样粗心的朋友可能会这样。

前几天下载mariadb的时候发现不能下载,网站可以打开但是不能下载。

这是因为默认所转到的下载站是东软,但是这个站里没有对应的下载路径。在下载页面只要换一个下载站就可以了。

<a href="http://s3.51cto.com/wyfs02/M02/75/3E/wKioL1YzVauQPee6AACtUnlRzbA957.jpg" target="_blank"></a>

安装介绍:

环境:

系统:CentOS6.5_x64

软件:cmake,mariadb5.5

安装方式:

1、Vendor: 操作系统自带的rpm包 

2、MySQL官方rpm包

3、通用二进制格式

4、源码编译

我们这里选择的是源码编译安装。

二、安装cmake。

1

2

3

4

5

<code>[root@nfs cmake-</code><code>3.4</code><code>.</code><code>0</code><code>-rc2]# ls</code>

<code>Auxiliary                   CMakeGraphVizOptions.cmake  CompileFlags.cmake  CTestConfig.cmake     Help        Source</code>

<code>bootstrap                   CMakeLists.txt              configure           CTestCustom.cmake.</code><code>in</code>  <code>Licenses    Templates</code>

<code>CMakeCPack.cmake            CMakeLogo.gif               CONTRIBUTING.rst    DartConfig.cmake      Modules     Tests</code>

<code>CMakeCPackOptions.cmake.</code><code>in</code>  <code>cmake_uninstall.cmake.</code><code>in</code>    <code>Copyright.txt       doxygen.config        README.rst  Utilities</code>

可以通过configure来自定义安装,也可以执行目录下的bootstrap脚本来自动安装。

必备环境:gcc、gcc-c++

在用configure或bootstrap配置完以后会提示运行gmake,在linux上面gmake就是make,是一个符号链接。

<code>[root@nfs cmake-</code><code>3.4</code><code>.</code><code>0</code><code>-rc2]# ./bootstrap </code>

<code>[root@nfs cmake-</code><code>3.4</code><code>.</code><code>0</code><code>-rc2]# make</code>

<code>[root@nfs cmake-</code><code>3.4</code><code>.</code><code>0</code><code>-rc2]# make install</code>

三、安装mariadb。

1、创建用以运行mysql服务的用户。

<code>[root@nfs ~]# groupadd -r -g </code><code>3306</code> <code>mysql</code>

<code>[root@nfs ~]# useradd -r -s /sbin/nologin -g mysql -u </code><code>3306</code> <code>mysql</code>

<code>[root@nfs ~]# id mysql</code>

<code>uid=</code><code>3306</code><code>(mysql) gid=</code><code>3306</code><code>(mysql) groups=</code><code>3306</code><code>(mysql)</code>

这里无所谓,直接创建用户也一样。

2、创建数据库目录。最好在单独的磁盘上,不要与系统在一起。我这里做实验就无所谓了。

<code>[root@nfs ~]# mkdir -pv /mydata/data</code>

<code>mkdir: created directory `/mydata'</code>

<code>mkdir: created directory `/mydata/data'</code>

3、cmake配置选项。

不同之处:

./configure

cmake .

检查配置选项,生成编译配置文件

./configure --help

cmake . -LH or ccmake .

查看配置选项

make clean

rm CMakeCache.txt

清理此前的编译状态

先来看看配置选项,而且cmake也会检测当前所必须的一些工具或库。

6

7

8

<code>[root@nfs mariadb-</code><code>5.5</code><code>.</code><code>46</code><code>]# cmake . -LH</code>

<code>.</code>

<code>-- Could NOT find Curses (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH) </code>

<code>CMake Error at cmake/readline.cmake:</code><code>85</code> <code>(MESSAGE):</code>

<code>  </code><code>Curses library not found.  Please install appropriate </code><code>package</code><code>,</code>

<code> </code> 

<code>      </code><code>remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, </code><code>package</code> <code>name </code><code>is</code> <code>libncurses5-dev, on Redhat and derivates it </code><code>is</code> <code>ncurses-devel.</code>

报错缺少curses库文件,而且也提示安装ncurses-devel了。报错信息在所输出的配置选项上方。

安装完ncurses-devel以后,要删除CMakeCache.txt文件。

<code>[root@nfs mariadb-</code><code>5.5</code><code>.</code><code>46</code><code>]# yum install ncurses-devel -y</code>

<code>[root@nfs mariadb-</code><code>5.5</code><code>.</code><code>46</code><code>]# rm CMakeCache.txt -f</code>

<code>Warning: Bison executable not found </code><code>in</code> <code>PATH</code>

这个bison影响不大,大家可以装上,这里就不贴了。

<code>[root@nfs mariadb-</code><code>5.5</code><code>.</code><code>46</code><code>]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mydata/data -DWITH_ARCHIVE_STORAGE_ENGINE=on -DWITH_BLACKHOLE_STORAGE_ENGINE=on -DWITH_READLINE=on -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_XTRADB_STORAGE_ENGINE=on  </code>

<code>[root@nfs mariadb-</code><code>5.5</code><code>.</code><code>46</code><code>]# make</code>

<code>[root@nfs mariadb-</code><code>5.5</code><code>.</code><code>46</code><code>]# make install</code>

选项前面为什么加上-D,好像是表示默认属性,这点不清楚。

-DCMAKE_INSTALL_PREFIX  表示安装位置,我们一般习惯性的还是用mysql名称的目录,而且也避免有的应用使用的是这个目录。

-DMYSQL_DATADIR 表示数据存储目录

-DWITH_ARCHIVE_STORAGE_ENGINE 存储引擎archive,默认是不启用的。因为非常高的批量插入速度和实时压缩功能,和相对较差的查询功能,所以经常被用来当做仓库使用。

-DWITH_BLACKHOLE_STORAGE_ENGINE 黑洞引擎,写入的任何数据都会消失。

-DWITH_READLINE=on 附带readline行编辑库

-DWITH_SSL=system 使用系统的ssl库,要安装openssl-devel包。

-DWITH_ZLIB=system 使用系统的zlib库。

-DWITH_XTRADB_STORAGE_ENGINE 存储引擎xtradb,可以说是innodb的升级版。这个默认就是安装的。

这个配置所必须的openssl-devel要装上,zlib-devel一般默认是安装的。

cmake报错:

-- Could NOT find Boost

安装boost-devel

-- Looking for event.h - not found

安装libevent-devel。

有时候所报的软件名称不全可以用yum和grep来找到,如:“yum list all | grep event”

开始漫长的等待,编译完成并安装以后就跟下载的通用二进制包一样了。

4、初始化

在mariadb的安装目录中。

<code>[root@nfs mysql]# ls</code>

<code>bin      COPYING.LESSER  EXCEPTIONS-CLIENT  INSTALL-BINARY  man         README   share      support-files</code>

<code>COPYING  data            </code><code>include</code>            <code>lib             mysql-test  scripts  sql-bench</code>

<code>[root@nfs mysql]# chown -R mysql:mysql .            #安装目录属主属组为mysql</code>

<code>[root@nfs mysql]# scripts/mysql_install_db --datadir=/mydata/data --user=mysql   #初始化数据库</code>

<code>[root@nfs mysql]# chown -R root .                    #安装目录属主为root</code>

<code>[root@nfs mysql]# chown -R mysql:mysql /mydata/data        #数据库目录属主组为mysql</code>

<code>[root@nfs mysql]# ls /mydata/data</code>

<code>aria_log.</code><code>00000001</code>  <code>aria_log_control  mysql  performance_schema  test</code>

看来已经生成系统数据库了。

9

10

11

12

<code>[root@nfs mysql]# cp support-files/my-large.cnf /etc/my.cnf</code>

<code>cp: overwrite `/etc/my.cnf'? y</code>

<code>[root@nfs mysql]# cp support-files/mysql.server  /etc/init.d/mysqld</code>

<code>[root@nfs mysql]# chmod +x /etc/init.d/mysqld</code>

<code>[root@nfs mysql]# chkconfig --add mysqld</code>

<code>[root@nfs mysql]# chkconfig --list mysqld</code>

<code>mysqld             </code><code>0</code><code>:off    </code><code>1</code><code>:off    </code><code>2</code><code>:on    </code><code>3</code><code>:on    </code><code>4</code><code>:on    </code><code>5</code><code>:on    </code><code>6</code><code>:off</code>

<code>[root@nfs mysql]# vim /etc/my.cnf</code>

<code>thread_concurrency = </code><code>4</code>    <code>#cpu的二倍, 在</code><code>5.6</code><code>版本中去掉了。</code>

<code>datadir = /mydata/data    #添加这一行,数据库位置。</code>

<code>innodb_file_per_table = on  #独立的innodb表空间文件。</code>

配置文件如下

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

<code># For advice on how to change settings please see</code>

<code># http:</code><code>//dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html</code>

<code># *** DO NOT EDIT THIS FILE. It's a template which will be copied to the</code>

<code># *** </code><code>default</code> <code>location during install, and will be replaced </code><code>if</code> <code>you</code>

<code># *** upgrade to a newer version of MySQL.</code>

<code>[client]</code>

<code>port = </code><code>3306</code>

<code>socket=/</code><code>var</code><code>/lib/mysql/mysql.sock</code>

<code>default</code><code>-character-</code><code>set</code> <code>= utf8</code>

<code>[mysqld]</code>

<code># Remove leading # and </code><code>set</code> <code>to the amount of RAM </code><code>for</code> <code>the most important data</code>

<code># cache </code><code>in</code> <code>MySQL. Start at </code><code>70</code><code>% of total RAM </code><code>for</code> <code>dedicated server, </code><code>else</code> <code>10</code><code>%.</code>

<code># innodb_buffer_pool_size = 128M</code>

<code># Remove leading # to turn on a very important data integrity option: logging</code>

<code># changes to the binary log between backups.</code>

<code># log_bin</code>

<code># These are commonly </code><code>set</code><code>, remove the # and </code><code>set</code> <code>as</code> <code>required.</code>

<code>basedir = /usr/local/mysql</code>

<code>datadir = /mydata/data</code>

<code>socket = /</code><code>var</code><code>/lib/mysql/mysql.sock</code>

<code>user = mysql</code>

<code>innodb_file_per_table = on</code>

<code>#Disabling symbolic-links </code><code>is</code> <code>recommended to prevent assorted security risks</code>

<code>symbolic-links = </code><code>0</code>

<code>default</code><code>-time-zone = system</code>

<code>default</code><code>-storage-engine = InnoDB</code>

<code>[mysqld_safe]</code>

<code>log-error = /</code><code>var</code><code>/log/mysql/mysqld.log</code>

<code>pid-file = /</code><code>var</code><code>/run/msyqld/mysqld.pid</code>

<code># server_id = .....</code>

<code># socket = .....</code>

<code># Remove leading # to </code><code>set</code> <code>options mainly useful </code><code>for</code> <code>reporting servers.</code>

<code># The server defaults are faster </code><code>for</code> <code>transactions and fast SELECTs.</code>

<code># Adjust sizes </code><code>as</code> <code>needed, experiment to find the optimal values.</code>

<code># join_buffer_size = 128M</code>

<code># sort_buffer_size = 2M</code>

<code># read_rnd_buffer_size = 2M </code>

<code>sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES</code>

番外:

配置文件中的:

[mysqld]是作用于服务端。

[mysql]只是作用于mysql组件的客户端。

[client]是作用于所有客户端组件。

尝试启动:

<code>[root@nfs mysql]# service mysqld start</code>

<code>Starting MySQL...                                          [  OK  ]</code>

<code>[root@nfs mysql]# ss -tnlp</code>

<code>LISTEN     </code><code>0</code>      <code>50</code>     <code>*:</code><code>3306</code>        <code>*:*      users:((</code><code>"mysqld"</code><code>,</code><code>50837</code><code>,</code><code>15</code><code>))</code>

<code>[root@nfs mysql]# ll /mydata/data</code>

<code>total </code><code>28720</code>

<code>-rw-rw----. </code><code>1</code> <code>mysql mysql    </code><code>16384</code> <code>Oct </code><code>30</code> <code>11</code><code>:</code><code>51</code> <code>aria_log.</code><code>00000001</code>

<code>-rw-rw----. </code><code>1</code> <code>mysql mysql       </code><code>52</code> <code>Oct </code><code>30</code> <code>11</code><code>:</code><code>51</code> <code>aria_log_control</code>

<code>-rw-rw----. </code><code>1</code> <code>mysql mysql </code><code>18874368</code> <code>Oct </code><code>30</code> <code>12</code><code>:</code><code>08</code> <code>ibdata1</code>

<code>-rw-rw----. </code><code>1</code> <code>mysql mysql  </code><code>5242880</code> <code>Oct </code><code>30</code> <code>12</code><code>:</code><code>08</code> <code>ib_logfile0</code>

<code>-rw-rw----. </code><code>1</code> <code>mysql mysql  </code><code>5242880</code> <code>Oct </code><code>30</code> <code>12</code><code>:</code><code>08</code> <code>ib_logfile1</code>

<code>drwx------. </code><code>2</code> <code>mysql mysql     </code><code>4096</code> <code>Oct </code><code>30</code> <code>11</code><code>:</code><code>51</code> <code>mysql</code>

<code>-rw-rw----. </code><code>1</code> <code>mysql mysql      </code><code>245</code> <code>Oct </code><code>30</code> <code>12</code><code>:</code><code>08</code> <code>mysql-bin.</code><code>000001</code>

<code>-rw-rw----. </code><code>1</code> <code>mysql mysql       </code><code>19</code> <code>Oct </code><code>30</code> <code>12</code><code>:</code><code>08</code> <code>mysql-bin.index</code>

<code>-rw-r-----. </code><code>1</code> <code>mysql mysql     </code><code>1904</code> <code>Oct </code><code>30</code> <code>12</code><code>:</code><code>08</code> <code>nfs.star.com.err</code>

<code>-rw-rw----. </code><code>1</code> <code>mysql mysql        </code><code>6</code> <code>Oct </code><code>30</code> <code>12</code><code>:</code><code>08</code> <code>nfs.star.com.pid</code>

<code>drwx------. </code><code>2</code> <code>mysql mysql     </code><code>4096</code> <code>Oct </code><code>30</code> <code>11</code><code>:</code><code>51</code> <code>performance_schema</code>

<code>drwx------. </code><code>2</code> <code>mysql mysql     </code><code>4096</code> <code>Oct </code><code>30</code> <code>11</code><code>:</code><code>51</code> <code>test</code>

<code>[root@nfs mysql]#</code>

启动正常,我们先把服务停止,再做下后续操作。

<code>[root@nfs mysql]# service mysqld stop</code>

<code>Shutting down MySQL.                                       [  OK  ]</code>

5、后续操作。

执行程序的目录添加进path,lib目录添加到ld程序,man文档,include头文件。

<code>[root@nfs mysql]# vim /etc/profile.d/mysql.sh   </code>

<code>export PATH=/usr/local/mysql/bin:$PATH</code>

<code>[root@nfs mysql]# . /etc/profile.d/mysql.sh</code>

<code>[root@nfs mysql]# ln -s /usr/local/mysql/</code><code>include</code><code>/mysql/ /usr/</code><code>include</code><code>/mysql</code>

<code>[root@nfs mysql]# vim /etc/man.config </code>

<code>MANPATH /usr/local/mysql/man</code>

<code>[root@nfs mysql]# vim /etc/ld.so.conf.d/mysql-</code><code>5.5</code><code>.conf</code>

<code>/usr/local/mysql/lib</code>

查看其它信息:

<code>[root@nfs mysql]# mysqld --verbose --help | less</code>

<code>mysqld  Ver </code><code>5.5</code><code>.</code><code>46</code><code>-MariaDB-log </code><code>for</code> <code>Linux on x86_64 (Source distribution)</code>

<code>Copyright (c) </code><code>2000</code><code>, </code><code>2015</code><code>, Oracle, MariaDB Corporation Ab and others.</code>

<code>Starts the MariaDB database server.</code>

<code>Usage: mysqld [OPTIONS]</code>

<code>Default options are read from the following files </code><code>in</code> <code>the given order:</code>

<code>/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf</code>

配置文件的读取顺序。相同配置后面的覆盖前面的。所有配置文件会合并到一起生效。

并显示出配置文件中可用的服务器变量。 定义的和没有定义的所有变量。还有启动时可用的选项。

把安装目录重命名再符号链接成安装路径的目录,这样以后升级版本,直接作符号链接就可以了。

<code>[root@nfs mysql]# cd ..</code>

<code>[root@nfs local]# ls</code>

<code>bin  doc  etc  games  </code><code>include</code>  <code>lib  lib64  libexec  mysql  sbin  share  src</code>

<code>[root@nfs local]# mv mysql mysql5.</code><code>5.46</code>

<code>[root@nfs local]# ln -s mysql5.</code><code>5.46</code> <code>mysql</code>

<code>[root@nfs local]# ll</code>

<code>lrwxrwxrwx.  </code><code>1</code> <code>root root    </code><code>11</code> <code>Oct </code><code>30</code> <code>12</code><code>:</code><code>40</code> <code>mysql -&gt; mysql5.</code><code>5.46</code>

<code>drwxr-xr-x. </code><code>12</code> <code>root mysql </code><code>4096</code> <code>Oct </code><code>30</code> <code>12</code><code>:</code><code>23</code> <code>mysql5.</code><code>5.46</code>

四、数据库必要操作。

删除匿名用户, 给root创建密码

<code>[root@nfs local]# service mysqld start</code>

<code>Starting MySQL..                                           [  OK  ]</code>

<code>[root@nfs local]# mysql</code>

<code>Welcome to the MariaDB monitor.  Commands end </code><code>with</code> <code>; or \g.</code>

<code>Your MariaDB connection id </code><code>is</code> <code>2</code>

<code>Server version: </code><code>5.5</code><code>.</code><code>46</code><code>-MariaDB-log Source distribution</code>

<code>Type </code><code>'help;'</code> <code>or </code><code>'\h'</code> <code>for</code> <code>help. Type </code><code>'\c'</code> <code>to clear the current input statement.</code>

<code>MariaDB [(none)]&gt; SELECT user,host,password FROM mysql.user;</code>

<code>+------+--------------+----------+</code>

<code>| user | host         | password |</code>

<code>| root | localhost    |          |</code>

<code>| root | nfs.star.com |          |</code>

<code>| root | </code><code>127.0</code><code>.</code><code>0.1</code>    <code>|          |</code>

<code>| root | ::</code><code>1</code>          <code>|          |</code>

<code>|      | localhost    |          |</code>

<code>|      | nfs.star.com |          |</code>

<code>6</code> <code>rows </code><code>in</code> <code>set</code> <code>(</code><code>0.00</code> <code>sec)</code>

删除匿名用户或不用的:

<code>MariaDB [(none)]&gt; DROP USER </code><code>''</code><code>@</code><code>'localhost'</code><code>;</code>

<code>Query OK, </code><code>0</code> <code>rows affected (</code><code>0.00</code> <code>sec)</code>

<code>MariaDB [(none)]&gt; DROP USER </code><code>''</code><code>@</code><code>'nfs.star.com'</code><code>;</code>

<code>MariaDB [(none)]&gt; DROP USER </code><code>'root'</code><code>@</code><code>'::1'</code><code>;</code>

root用户设置密码:

<code>MariaDB [(none)]&gt; UPDATE mysql.user SET password=PASSWORD(</code><code>'abcd1234'</code><code>) WHERE user=</code><code>'root'</code><code>;</code>

<code>Query OK, </code><code>3</code> <code>rows affected (</code><code>0.03</code> <code>sec)</code>

<code>Rows matched: </code><code>3</code>  <code>Changed: </code><code>3</code>  <code>Warnings: </code><code>0</code>

<code>MariaDB [(none)]&gt; FLUSH PRIVILEGES;</code>

<code>+------+--------------+-------------------------------------------+</code>

<code>| user | host         | password                                  |</code>

<code>| root | localhost    | *4AD47E08DAE2BD4F0977EED5D23DC901359DF617 |</code>

<code>| root | nfs.star.com | *4AD47E08DAE2BD4F0977EED5D23DC901359DF617 |</code>

<code>| root | </code><code>127.0</code><code>.</code><code>0.1</code>    <code>| *4AD47E08DAE2BD4F0977EED5D23DC901359DF617 |</code>

<code>3</code> <code>rows </code><code>in</code> <code>set</code> <code>(</code><code>0.00</code> <code>sec)</code>

<code>MariaDB [(none)]&gt;</code>

<code>MariaDB [(none)]&gt; \q</code>

<code>Bye</code>

<code>[root@nfs local]# mysql -uroot -p</code>

<code>Enter password: </code>

<code>Your MariaDB connection id </code><code>is</code> <code>6</code>

<code>MariaDB [(none)]&gt; SHOW ENGINES;</code>

<code>+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+</code>

<code>| Engine             | Support | Comment                                                                    | Transactions | XA   | Savepoints |</code>

<code>| MEMORY             | YES     | Hash based, stored </code><code>in</code> <code>memory, useful </code><code>for</code> <code>temporary tables                  | NO           | NO   | NO         |</code>

<code>| CSV                | YES     | CSV storage engine                                                         | NO           | NO   | NO         |</code>

<code>| Aria               | YES     | Crash-safe tables </code><code>with</code> <code>MyISAM heritage                                     | NO           | NO   | NO         |</code>

<code>| BLACKHOLE          | YES     | /dev/</code><code>null</code> <code>storage engine (anything you write to it disappears)             | NO           | NO   | NO         |</code>

<code>| InnoDB             | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |</code>

<code>| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                                      | NO           | NO   | NO         |</code>

<code>| ARCHIVE            | YES     | Archive storage engine                                                     | NO           | NO   | NO         |</code>

<code>| MyISAM             | YES     | MyISAM storage engine                                                      | NO           | NO   | NO         |</code>

<code>| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                         | NO           | NO   | NO         |</code>

<code>9</code> <code>rows </code><code>in</code> <code>set</code> <code>(</code><code>0.01</code> <code>sec)</code>

查看有哪些存储引擎。

本文转自 zouqingyun 51CTO博客,原文链接:http://blog.51cto.com/zouqingyun/1708804,如需转载请自行联系原作者