--------------------------------------------------------------------------------------------------------------------
下面介绍CentOS 7.0下安装配置mariadb的详细安装配置过程
服务器相关设置如下:
操作系统:CentOS 7.0 64位
IP地址:192.168.1.102
网 关:192.168.1.1
机器名: mariadbServer
mariadb版本:mariadb_10.3
CentOS 7.0系统安装配置步骤详解
一.最小化安装CentOS 7.0
这里面最重要的是存储的分区规划:
推荐的分区模式:
![](https://i-blog.csdnimg.cn/blog_migrate/6aaccbe7590e3f41caa2d5af6dc35124.png)
对于单个磁盘驱动器,LVM实际对性能没有太大的贡献,但是可以用他来对数据进行分类管理,也可以方便MySQL使用LVM进行备份
我的分区模式:
二.安装本地yum源:
a.挂载并复制光盘内容到/yum 文件夹
shell > mkdir /mnt/cdrom #创建目录
shell > mount /dev/cdrom /mnt/cdrom #挂载
-- 若不想每次都要放光盘,那就复制光盘文件到本地硬盘
shell > cp -avf /mnt/cdrom/* /yum # -a:该选项保留链接、文件属性,并递归地复制目录
b.创建本地yum源配置文件
cat >>/etc/yum.repos.d/CentOS-Local.repo<<EOF
[Local]
name=LocalYum
baseurl=file:///yum/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
c.禁用网络yum源
shell > cd /etc/yum.repos.d/
shell > mv CentOS-Base.repo CentOS-Base.repo.bak
三.主机名网络及防火墙访问安全设置
a.若安装时没有设置主机名,则参考以下步骤设置主机名:
shell > hostname mariadbServer #临时设置主机名为mariadbServer
shell > vi /etc/hostname #编辑配置文件
mariadbServer #修改localhost.localdomain为mariadbServer
:wq! #保存退出
shell > vi /etc/hosts #编辑配置文件
127.0.0.1 localhost mariadbServer #修改localhost.localdomain为mariadbServer
:wq! #保存退出
b.网络配置
shell > cd /etc/sysconfig/network-scripts/
shell > vi ifcfg-eno16777736
HWADDR=00:0C:29:8D:24:73
TYPE=Ethernet
BOOTPROTO=static #启用静态IP地址
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=ae0965e7-22b9-45aa-8ec9-3f0a20a85d11
ONBOOT=yes #开启自动启用网络连接
IPADDR0=192.168.21.128 #设置IP地址
PREFIXO0=24 #设置子网掩码
GATEWAY0=192.168.21.2 #设置网关
DNS1=8.8.8.8 #设置主DNS
DNS2=8.8.4.4 #设置备DNS
:wq! #保存退出
shell > service network restart #重启网络
shell > ip addr #CentOS 7 ifconfig命令已经过时 查看IP地址使用ip addr 和 ip link
-- 若习惯ifconfig 可以使用 yum install net-tools 进行安装
c.防火墙设置
CentOS 7.0默认使用的是firewall作为防火墙,这里改为常用的iptables防火墙。
-- 关闭firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
-- 安装iptables防火墙
yum install iptables-services #安装
vi /etc/sysconfig/iptables #编辑防火墙配置文件
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 12888 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
:wq! #保存退出
systemctl restart iptables.service #最后重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
d.关闭SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存退出
立即启用 setenforce 0
e.修改ssh默认端口,并取消允许root的ssh权限,防止暴力破解
>vi /etc/ssh/sshd_config
-- 打开并修改PermitRootLogin 为 no
-- 打开并修改port为12887
service sshd restart
四.mariadb安装及配置
a.上传安装编译好的包到目录,使用wincp或vsftpd,建议使用wincp
安装依赖的package:
shell> yum install -y gcc gcc-c++
shell> yum install -y cmake libaio bison ncurses-devel
b.添加用户和组
shell> groupadd mariadb-- 创建mariadb组
shell> useradd -g mariadb mariadb-- 创建mariadb用户
shell> passwd mariadb-- 修改密码
c.解压缩并创建链接
shell> cd /usr/local
shell> tar -zxvf /root/mariadb-10.0.13-linux-x86_64.tar.gz
shell> ln -s /usr/local/mariadb-10.0.13-linux-x86_64 mariadb
d.修改文件所属用户及群组
shell> cd mariadb
shell> chown -R mariadb .
shell> chgrp -R mariadb .
e.创建数据目录并初始化权限表
Shell > cp /usr/local/mariadb-version.os/supported_files/my_medium.cnf /etc/my.cnf
shell> scripts/mysql_install_db --user=mariadb --datadir=/usr/local/mariadb/data
f.再次修改文件所属用户
数据目录开放给mysql用户,其他可以开放给root
shell> chown -R root .
shell> chown -R mariadb data
g.安装完成启动mysql
-- 创建链接
shell > ln -s /usr/local/mariadb /usr/local/mysql
-- 修改参数文件并启动数据库
shell> bin/mysqld_safe --user=mariadb
h.环境变量配置并尝试连接mysql
将/usr/local/mariadb/bin加入$PATH变量中,并设置别名
alias mariadb = 'mysql'
编译环境变量 source .bash_profile
shell > mysql
注:
中途如有错误,需重新安装,重新安装前先删除对应的文件
***************************************************************************************************
** Remove any pre-installed old mysql files / libraries usually linux distros installs MySQL 5.1 **
***************************************************************************************************
rm -fR /etc/mysql
rm -fR /var/lib/mysql/mysql
rm -fR /var/lib/mysql
find -R / -name mysql*
find / -name mysql*
rm -fR /opt/mysql
find / -name mysql*
重新解压文件.
j.用户安全配置
列举出当前不需要密码的用户:
shell > SELECT User, Host, Password FROM mysql.user;
列举出不需要密码可以连接的db:
shell > select user,db from mysql.db;
允许匿名用户或无权限的用户访问test或test_前缀的数据库;
-- 清除该表内容
root密码的设定可以有三种方式:
1).update
shell> mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
-> WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
2).set password
shell> mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'::1' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd');
3).mysqladmin
shell> mysqladmin -u root password "newpwd"
shell> mysqladmin -u root -h host_name password "newpwd"
-- 删除空用户:
mysql>drop user ''@'localhost';
mysql>drop user ''@'mariadb\_server';
-- 测试数据库的安全保障:
shell> mysql -u root -p
Enter password: (enter root password here)
mysql> DELETE FROM mysql.db WHERE Db LIKE 'test%';
mysql> FLUSH PRIVILEGES;
-- 彻底删除测试数据库
mysql> drop database test;
重启系统后报错找不到对应的/usr/local/mysql/bin/mysqld
原因是mysqld只认mysql/bin下面的mysqld,因此需要做一个链接到正确的mariadb/bin/mysqld
k.用户管理:
允许远程root用户登录
mysql> grant all privileges on *.* to 'root'@'192.168.1.111' identified by 'y}%oTiaU-3' with grant option;
mysql> flush privileges;
l.设置mariadb开机自启动
-- cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mariadb #将服务文件拷贝到init.d下,并重命名为mariadb
-- vi mariadb #修改 mysqld_safe --datadir .. 添加用户--》 mysqld_safe --user=mariadb ...
-- chkconfig --add mysql 添加服务
-- chkconfig --list 显示服务列表
如果看到mysql的服务,并且3,4,5都是on的话则成功,如果是off,则键入
chkconfig --level 345 mysql on
-- reboot重启电脑
-- netstat -na | grep 3306,如果看到有监听说明服务启动了
m.设置mariadb数据库默认字符集
mariadb默认的数据库字符集为latin1,如果需要修改为支持中文字符的数据库,则需要修改以下配置参数。
-- vi /etc/my.cnf
[mysqld]
...
character-set-server=gbk (或utf)
-- service mariadb restart
[注] 在数据库创建的时候必须做好字符集的规划,在后期修改字符集可能会导致数据丢失。
n.修改默认的datadir目录地址
随着数据量的增长,数据目录可能发生瓶颈,这时候需要对空间进行扩展指定新的datadir目录
解决的方法是:
-- 停库,指向新的datadir目录;
shell> service mariadb stop
shell> mkdir -pv /mariadb/data
shell> chown mariadb:mariadb /mariadb/data
shell> cp -R /usr/local/mariadb/data/* /mariadb/data
shell> cd /mariadb/data
shell> chown -R mariadb:mariadb .
修改my.cnf
datadir = /mariadb/data
shell> service mariadb start
-- 也可以在安装时就指定datadir目录参数;
o.默认数据库不允许创建函数
log-bin-trust-function-creators=1
p.创建用户,权限管理
创建普通用户,权限查询和执行存储过程
create user 'test'@'%' identified by '0R2fz%DLPc';
grant select,insert,update,delete,execute on testdb.* to 'test'@'%' identified by '0R2fz%DLPc' with grant option;