MariaDB的相关知识
MySQL是一种最常见的关系型数据库,在经典的LAMP架构中代表M。在被甲骨文公司收购之后,MySQL的作者重新起了一个开源项目,叫MariaDB。所以在很多新的Linux发行版系统中,可以通过安装MariaDB来使用这个数据库。
1.因为系统发行版由于更注重于软件的稳定,提供的MariaDB版本还在5.5。
2.由于MariaDB在5.5以后已经有许多性能上的优化提升,生产环境需要更高版本的MariaDB。3.因为cmake的方式与传统的编译安装并不一样且繁琐,所以一般前两种方法较为常用。
- 注:2016年
- 除了MariaDB,其实Tomcat也是这种情况:大家需要新版本,但是编译很麻烦。
‘
- 官方就为大家提供他们编译并打包好好的二进制程序给大家下载。
配置官方yum源,并安装MariaDB
(1)首先我们需要在官方网站寻找并配置一个与系统合适的镜像。
Name | Release Date | Release Status |
---|---|---|
10.1.19 | 2016-11-07 | Stable |
- 本文使用的系统版本为CentOS7.1
因为我们此处要使用yum源安装MariaDB,所以我们选用下面的这种方式。而且现在MariaDB在已经有清华镜像,所以我们不用担心官方镜像安装特别慢的问题。
- 注意:系统已经关闭了selinux,以及iptables。
File Name | Package Type | OS / CPU | Size | Meta |
---|---|---|---|---|
Red Hat, Fedora, and CentOS Packages | RPM Package | RedHat/CentOS/Fedora(x86, x86_64, ppc64, ppc64le) | SignatureInstructions |
(2)找到合适的镜像之后新建一个文件,如 /etc/yum.repos.d/mariadb.repo
配置它为yum源,内容如下:
- # MariaDB 10.1 CentOS repository list
- # http://downloads.mariadb.org/mariadb/repositories/
- [mariadb]
- name = MariaDBbaseurl = https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.1.19/yum/centos7-amd64
- gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
- gpgcheck=1
通过命令查看MariaDB-server的信息,我们可以看到update镜像提供5.5.50的版本。
而我们刚才配置的mariadb镜像则是10.1.19
- 注意:在开始的时候也说过,MySQL被甲骨文收购了。
- 因为MariaDB说MySQL有的功能他们都有,但是为了不让人误会,所以跳出了5系列的循环。
- 也就是MySQL5.6和5.7其实对应了MariaDB的10.0和10.1。并不是已经跨越了5个版本。
- [root@bc ~]# yum list MariaDB-server
- Loaded plugins: fastestmirror, langpacks
- Loading mirror speeds from cached hostfile
- * base: mirrors.163.com
- * epel: ftp.cuhk.edu.hk
- * extras: mirrors.tuna.tsinghua.edu.cn
- * updates: mirrors.163.com
- Available Packages
- MariaDB-server.x86_64 10.1.19-1.el7.centos mariadb
- mariadb-server.x86_64 1:5.5.50-1.el7_2 update
(3开始安装MariaDB吧!
- [root@bc~]#yum install MariaDB - server.x86_64 MariaDB - client.x86_64 - y
- 安装的这两个组件,MariaDB-server提供数据存储功能,MariaDB-client提供数据库的链接功能。
- yum安装软件的好处在于便捷,但是经常由于没有人维护和更新最新版的rpm包,所以有的时候,我们也只能另辟蹊径。
(4)查看已经安装的MariaDB的版本
- [root@bc~]#mysql--version mysql Ver 15.1 Distrib 10.1.19 - MariaDB,
- for Linux(x86_64) using readline 5.1
- 已经成功安装10.1.19的MariaDB了。
使用官方编译好的二进制程序安装MariaDB
(1)首先我们依然是在官方网站寻找一个稳定的版本。
- STABLE
Name | Release Date | Release Status |
---|---|---|
10.0.28 | 2016-10-28 | Stable |
- 官方会提示,请不要在生产环境使用beta和alpha版本的数据库。
- 他们的主要功能一般是用来测试和排错,所以不稳定。
- 这里我们选择安装一个10.0系列的Stable的数据库。
(2)选择二进制格式的安装方式
- 我们打算在安装之后,连接刚才10.1的数据库并插入语句。
File Name | Package Type | OS / CPU | Size | Meta |
---|---|---|---|---|
mariadb-10.0.28-linux-x86_64.tar.gz | gzipped tar file | Linux x86_64 | 317.3 MB | MD5 SHA1 SignatureInstructions |
- 根据CPU和系统,我们选择安装这个包。
- 官方编译好的二进制包都是tar.gz格式的,不过注意不要安装到源码包。
(3)解压缩文件并创建软连接。
- [root@node2 ~]# tar -xf mariadb.tar.gz -C /usr/local/
- [root@node2 ~]# cd /usr/local/
- [root@node2 local]# ln -sv mariadb-10.0.28-linux-x86_64/ mysql
- ‘mysql’ -> ‘mariadb-10.0.28-linux-x86_64/’
- 为什么要做软连接呢?
- 一是因为以后我们以后安装其他版本的时候方便一点点。
(4)把mysql的执行文件路径导出到工作路径
- 二是名字够简短,容易辨认。
- [root@node2 mysql]# vim /etc/profile.d/mariadb.sh
- export PATH=/usr/local/mysql/bin:$PATH
- [root@node2 mysql]# chmod +x !$
- [root@node2 ~]# . /etc/profile.d/mariadb.sh
(5)创建用户,修改文件权限,并创建数据存放目录
- [root@node2 mysql]# useradd -r mysql
- [root@node2 mysql]# id mysql
- uid=996(mysql) gid=994(mysql) groups=994(mysql)
- [root@node2 mysql]# chown mysql.mysql /usr/local/mysql/* -R
- [root@node2 mysql]# mkdir /datadir
- [root@node2 mysql]# chown mysql.mysql -R /datadir/
- 创建用户和数据存放目录是为了一会儿初始化的时候准备。
- 而且mysql有一个常见问题就是,权限不对就启动不成功,所以要注意。
(6)初始化数据库
- [root@node2 ~]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/datadir --basedir=/usr/local/mysql
- Installing MariaDB/MySQL system tables in '/datadir' ...
- 161210 8:43:23 [Warning] 'THREAD_CONCURRENCY' is deprecated and will be removed in a future release.
- 161210 8:43:23 [Note] /usr/local/mysql/bin/mysqld (mysqld 10.0.28-MariaDB) starting as process 3139 ...
- 161210 8:43:23 [Note] InnoDB: Using mutexes to ref count buffer pool pages
- 161210 8:43:23 [Note] InnoDB: The InnoDB memory heap is disabled
- 161210 8:43:23 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
- 161210 8:43:23 [Note] InnoDB: GCC builtin __sync_synchronize() is used for memory barrier
- 161210 8:43:23 [Note] InnoDB: Compressed tables use zlib 1.2.3
- 161210 8:43:23 [Note] InnoDB: Using Linux native AIO
- 161210 8:43:23 [Note] InnoDB: Using CPU crc32 instructions
- 161210 8:43:23 [Note] InnoDB: Initializing buffer pool, size = 128.0M
- 161210 8:43:23 [Note] InnoDB: Completed initialization of buffer pool
- 161210 8:43:23 [Note] InnoDB: Highest supported file format is Barracuda.
- 161210 8:43:23 [Note] InnoDB: Log scan progressed past the checkpoint lsn 49463
- 161210 8:43:23 [Note] InnoDB: Database was not shutdown normally!
- 161210 8:43:23 [Note] InnoDB: Starting crash recovery.
- 161210 8:43:23 [Note] InnoDB: Reading tablespace information from the .ibd files...
- 161210 8:43:23 [Note] InnoDB: Restoring possible half-written data pages
- 161210 8:43:23 [Note] InnoDB: from the doublewrite buffer...
- InnoDB: Doing recovery: scanned up to log sequence number 1606610
- 161210 8:43:23 [Note] InnoDB: Starting an apply batch of log records to the database...
- InnoDB: Progress in percent: 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
- InnoDB: Apply batch completed
- 161210 8:43:24 [Note] InnoDB: 128 rollback segment(s) are active.
- 161210 8:43:24 [Note] InnoDB: Waiting for purge to start
- 161210 8:43:24 [Note] InnoDB: Percona XtraDB (http://www.percona.com) 5.6.32-79.0 started; log sequence number 1606610
- 161210 8:43:24 [Note] Recovering after a crash using mysql-bin
- 161210 8:43:24 [Note] Starting crash recovery...
- 161210 8:43:24 [Note] Crash recovery finished.
- 161210 8:43:24 [Warning] Failed to load slave replication state from table mysql.gtid_slave_pos: 1146: Table 'mysql.gtid_slave_pos' doesn't exist
- 161210 8:43:24 [Note] InnoDB: FTS optimize thread exiting.
- 161210 8:43:24 [Note] InnoDB: Starting shutdown...
- 161210 8:43:25 [Note] InnoDB: Waiting for page_cleaner to finish flushing of buffer pool
- 161210 8:43:27 [Note] InnoDB: Shutdown completed; log sequence number 1622831
- OK
- Filling help tables...
- 161210 8:43:27 [Warning] 'THREAD_CONCURRENCY' is deprecated and will be removed in a future release.
- 161210 8:43:27 [Note] /usr/local/mysql/bin/mysqld (mysqld 10.0.28-MariaDB) starting as process 3169 ...
- 161210 8:43:27 [Note] InnoDB: Using mutexes to ref count buffer pool pages
- 161210 8:43:27 [Note] InnoDB: The InnoDB memory heap is disabled
- 161210 8:43:27 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
- 161210 8:43:27 [Note] InnoDB: GCC builtin __sync_synchronize() is used for memory barrier
- 161210 8:43:27 [Note] InnoDB: Compressed tables use zlib 1.2.3
- 161210 8:43:27 [Note] InnoDB: Using Linux native AIO
- 161210 8:43:27 [Note] InnoDB: Using CPU crc32 instructions
- 161210 8:43:27 [Note] InnoDB: Initializing buffer pool, size = 128.0M
- 161210 8:43:27 [Note] InnoDB: Completed initialization of buffer pool
- 161210 8:43:27 [Note] InnoDB: Highest supported file format is Barracuda.
- 161210 8:43:27 [Note] InnoDB: 128 rollback segment(s) are active.
- 161210 8:43:27 [Note] InnoDB: Waiting for purge to start
- 161210 8:43:27 [Note] InnoDB: Percona XtraDB (http://www.percona.com) 5.6.32-79.0 started; log sequence number 1622831
- 161210 8:43:27 [Note] InnoDB: FTS optimize thread exiting.
- 161210 8:43:27 [Note] InnoDB: Starting shutdown...
- 161210 8:43:28 [Note] InnoDB: Waiting for page_cleaner to finish flushing of buffer pool
- 161210 8:43:30 [Note] InnoDB: Shutdown completed; log sequence number 1622841
- OK
- To start mysqld at boot time you have to copy
- support-files/mysql.server to the right place for your system
- PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
- To do so, start the server, then issue the following commands:
- '/usr/local/mysql/bin/mysqladmin' -u root password 'new-password'
- '/usr/local/mysql/bin/mysqladmin' -u root -h node2.bc.com password 'new-password'
- Alternatively you can run:
- '/usr/local/mysql/bin/mysql_secure_installation'
- which will also give you the option of removing the test
- databases and anonymous user created by default. This is
- strongly recommended for production servers.
- See the MariaDB Knowledgebase at http://mariadb.com/kb or the
- MySQL manual for more instructions.
- You can start the MariaDB daemon with:
- cd '/usr/local/mysql' ; /usr/local/mysql/bin/mysqld_safe --datadir='/datadir'
- You can test the MariaDB daemon with mysql-test-run.pl
- cd '/usr/local/mysql/mysql-test' ; perl mysql-test-run.pl
- Please report any problems at http://mariadb.org/jira
- The latest information about MariaDB is available at http://mariadb.org/.
- You can find additional information about the MySQL part at:
- http://dev.mysql.com
- Support MariaDB development by buying support/new features from MariaDB
- Corporation Ab. You can contact us about this at sales@mariadb.com.
- Alternatively consider joining our community based development effort:
- http://mariadb.com/kb/en/contributing-to-the-mariadb-project/
其实都是一些输出信息。但是这里仔细看的话,他们有教我们下一步怎么做。
- To start mysqld at boot time you have to copy support - files / mysql.server to the right place
- for your system
- PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER ! To do so,
- start the server,
- then issue the following commands:
- '/usr/local/mysql/bin/mysqladmin' - u root password 'new-password''/usr/local/mysql/bin/mysqladmin' - u root - h node2.bc.com password 'new-password'
- Alternatively you can run: '/usr/local/mysql/bin/mysql_secure_installation'
- which will also give you the option of removing the test databases and anonymous user created by
- default.This is strongly recommended
- for production servers.
- See the MariaDB Knowledgebase at http:
- //mariadb.com/kb or the
- MySQL manual
- for more instructions.
- You can start the MariaDB daemon with:
- cd '/usr/local/mysql';
- /usr/local / mysql / bin / mysqld_safe--datadir = '/datadir'
- You can test the MariaDB daemon with mysql - test - run.pl cd '/usr/local/mysql/mysql-test';
- perl mysql - test - run.pl
(7)设置开机启动
- [root@node2 mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
- [root@node2 mysql]# chkconfig --add mysqld
- [root@node2 ~]# chkconfig mysqld on
(8)修改配置文件,加入几个常用参数。
- [root@node2 mysql]# cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf
- [root@node2 ~]# vim /etc/my.cnf
- [mysqld]
- datadir=/datadir
- user=mysql
- skip_name_resolve
- innodb_file_per_table
(9)启动数据库
- [root@node2 ~]# service mysqld start
- Starting MySQL.161210 08:44:14 mysqld_safe Logging to '/datadir/node2.bc.com.err'.
- SUCCESS!
- 启动成功!
- 注意的是,先启动MySQL是无法进行下一步安全设置的。
- 因为你想想不开服务,怎么改密码和清除示例。
(10)初始化安全设置
- [root@node2~]#mysql_secure_installation
- NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE ! PLEASE READ EACH STEP CAREFULLY !
- In order to log into MariaDB to secure it,
- we 'll need the current
- password for the root user. If you've just installed MariaDB,
- and you haven 't set the root password yet, the password will be blank,
- so you should just press enter here.
- Enter current password for root (enter for none):
- OK, successfully used password, moving on...
- Setting the root password ensures that nobody can log into the MariaDB
- root user without the proper authorisation.
- Set root password? [Y/n] Y
- New password:
- Re-enter new password:
- Password updated successfully!
- Reloading privilege tables..
- ... Success!
- By default, a MariaDB installation has an anonymous user, allowing anyone
- to log into MariaDB without having to have a user account created for
- them. This is intended only for testing, and to make the installation
- go a bit smoother. You should remove them before moving into a
- production environment.
- Remove anonymous users? [Y/n] Y
- ... Success!
- Normally, root should only be allowed to connect from 'localhost '. This
- ensures that someone cannot guess at the root password from the network.
- Disallow root login remotely? [Y/n] n
- ... skipping.
- By default, MariaDB comes with a database named 'test ' that anyone can
- access. This is also intended only for testing, and should be removed
- before moving into a production environment.
- Remove test database and access to it? [Y/n] Y
- - Dropping test database...
- ... Success!
- - Removing privileges on test database...
- ... Success!
- Reloading the privilege tables will ensure that all changes made so far
- will take effect immediately.
- Reload privilege tables now? [Y/n] Y
- ... Success!
- Cleaning up...
- All done! If you've completed all of the above steps,
- your MariaDB installation should now be secure.
- Thanks
- for using MariaDB !
(11)进入数据库!
- [root@node2 ~]# mysql -p
- Enter password:
- Welcome to the MariaDB monitor. Commands end with ; or \g.
- Your MariaDB connection id is 11
- Server version: 10.0.28-MariaDB MariaDB Server
- Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
- MariaDB [(none)]> show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | mysql |
- | performance_schema |
- +--------------------+
- 3 rows in set (0.00 sec)
来源: http://www.linuxidc.com/Linux/2017-10/147570.htm