Linux下MariaDB 的二进制包安装方法
软件包的安装方式有三种:源码包安装、二进制包安装、rpm包安装。这三种安装方法都各有优劣。RPM安装:适合小环境,核心功能都具备,快速搭建环境,但它的版本一般都不会太高;二进制安装:它是发布出来时预先编译过的,既避免了编译的麻烦,又提供了增强功能;编译安装:它的要求高,要有编译环境,编译时可指定几乎所有选项,可满足你的所有选择。
今天就来讲讲二进制方式的安装,它即解决了版本的问题,又不会像源码编译一样需要我们花费大量的时间去编译。对于二进制格式的包,我们只需要解压缩后就能够使用数据库,这听起来很容易,但必须要注意一些问题。二进制格式的程序包是已经编译好的二进制程序,所以里边有很多脚本都是在固定的路径下执行的,所以安装过程中我们必须按照它所给的安装信息来安装。而安装MariaDB它的安装路径必须在/usr/local目录下,并且目录名称必须叫mysql。如果不这样设置,一些脚本无法运行,更别提能成功安装了。
安装步骤:
1、下载二进制包
2、解压到安装目录
3、准备配置文件
4、准备数据库
5、准备日志文件
6、准备服务脚本
7、安全初始化
安装过程:
1、下载二进制包。下载地址
我这里选择最新版本的mariadb-10.3.14稳定版,进入后下载适用于64位操作系统的Linux x86_64版本
2、解压到安装目录下
下载完成后用SFTP上传到Linux里,然后解压到/usr/local目录里:
tar -zxvf mariadb-10.3.14-linux-x86_64.tar.gz -C /usr/local
3、准备配置文件
根据文件我们要创建一个mysql的用户,它可以对以后的mysql数据库进行管理,同时我们还可以指定mysql的数据目录,这样以后它的存储数据就可以独立出来放置了,同时指明shell类型为nologin:
useradd -r -m -d /usr/local/mariadb-10.3.14-linux-x86_64/data -s /sbin/nologin mysql
创建一个mysql的软连接,这样可以方便以后的版本更新:
cd /usr/local
ln -sv mariadb-10.3.14-linux-x86_64 mysql
然后要把这个目录的管理权限给mysql管理:
chown -R root:mysql mysql/
准备一个my.cnf文件,并放入指定目录,my.cnf文件内容如下,修改安装目录和数据存储目录为上面设置好的对应目录:
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER
character_set_server=utf8
# MariaDB 安装目录
basedir = /usr/local/mariadb-10.3.14-linux-x86_64
# MariaDB 数据存储目录
datadir = /usr/local/mariadb-10.3.14-linux-x86_64/data
bind-address = 0.0.0.0
# 端口号
port = 3306
server_id = 1
socket = /tmp/mysql.sock
event_scheduler=on
slow_query_log = off
skip_name_resolve
default_storage_engine = InnoDB
lower_case_table_names = 1
innodb_buffer_pool_size = 4G
innodb_undo_log_truncate = ON
max_allowed_packet = 1G
group_concat_max_len = 102400
max_connections = 5000
binlog_cache_size = 2M
read_buffer_size = 8M
innodb_flush_log_at_trx_commit = 2
sync_binlog = 0
innodb_autoextend_increment = 1000
innodb_flush_method = O_DIRECT
innodb_read_io_threads = 10
innodb_write_io_threads = 10
interactive_timeout = 1800
wait_timeout = 1800
binlog_cache_size = 2048KB
back_log = 3000
max_connect_errors = 1000
concurrent_insert=2
innodb_autoextend_increment=128
innodb_buffer_pool_instances=1
innodb_log_file_size = 256M
把my.cnf放入指定目录:
mkdir /etc/mysql/
cp ./my.cnf /etc/mysql/my.cnf
4、准备数据库文件
/usr/local/mysql/scripts/mysql_install_db --datadir=/usr/local/mariadb-10.3.14-linux-x86_64/data --user=mysql
执行后它会给一些警告信息,可以忽略。
5、准备日志文件
准备好日志文件,这样可以有利于以后的排错。当然由于这个服务是mysql管理的,而mysql是对/var/log/这个目录没有写权限的,所以这里我们还需要给mysql一个ACL的特殊权限才行,先创建好目录和文件,再给予mysql一个ACL的特殊权限,使它可以读写日志:
mkdir /var/log/mariadb/
touch /var/log/mariadb/mariadb.log
setfacl -R -m u:mysql:rwx /var/log/mariadb/mariadb.log
6、准备服务脚本
到这里MariaDB二进制包已经安装完毕了。我们现在就要把这个服务启动起来,所以就需要为这个服务准备启动脚本。当然这个脚本也在软件包里有提供,我们只需要复制出来就可以使用了。这个脚本也是放置在support-files这个目录里,它的里面有一个mysql.server的文件就是提供的服务脚本,复制到/etc/init.d/放置服务脚本的目录下:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chkconfig --add mysql
chkconfig on
chkconfig --add mysql ### 把这个服务加入到服务列表中去
chkconfig on ### 这个服务设定为开机自启,默认为2、3、4、5这三种模式下开机会自动启动
启动mysql服务:
service mysql start
做完这些后我们就可以进入数据库了,但是它的命令路径不在默认的PATH路径下,而是在/usr/local/mysql/bin/目录下,所以我们每次要进入数据库还需要敲这长长的一串命令。这样太麻烦,所以我们就把这个命令的路径写入到PATH变量里面去,省的以后敲命令麻烦:
vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile.d/mysql.sh
添加完成后就可以使用 mysql 这个命令来直接进入数据库了
7、安全初始化
此时mysql这个服务以经开启了,但是它现在并不安全。因为现在任何用户都可以访问这个数据库,所以我们要给这个数据库设置管理用户,设定访问权限。下面这个xxxx用户是不需要密码就可以进入的:
mysql -u xxxxx
所以为了安全,我们要对数据库进行安全初始化设置。这个命令在mysql的命令包里是自带的所以我们只需要去执行这条命令就可初始化了,先使用quit;命令退出MariaDB,注意有结束符英文分号“;”
输入命令初始化:
mysql_secure_installation
从上图可以看到安全初始化后,匿名账号已经登录不进去了。现在管理员就可以自由的分配用户来进行对数据库的管理了。
管理员进入数据库进行查看:
防火墙放行3306端口:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
立即生效
firewall-cmd --reload
若远程连接提示:
Host ‘xxx.xxx.xxx.xxx’ is not allowed to connect to this mariadb server
是因为未开启远程连接权限,使用命令mysql -uroot -p**** 进入mysql,给予root用户,所有IP授权:
grant all privileges on *.* to ‘root’ @’%’ identified by ‘password’ with grant option;
flush privileges;