MySQL数据库第一部分之简介和安装

mysql数据库的安装方式:源码安装;二进制安装;yum安装:

MySQL数据库

数据库管理系统的优点 :

相互关联的数据的集合 

较少的数据冗余 

程序与数据相互独立 

保证数据的安全、可靠 

最大限度地保证数据的正确性 

数据可以并发使用并能同时保证一致性

 

数据库管理系统的基本功能

数据定义 

数据处理 

数据安全 

数据备份

数据库系统的架构

单机架构 

大型主机/终端架构 

主从式架构(C/S) 

分布式架构

事务transaction:多个操作被当作一个整体对待

A: 原子性

C:一致性

I: 隔离性

D:持久性

MariaDB的特性;

插件式存储引擎

单进程,多线程 

诸多扩展和新特性 

提供了较多测试组件 

开源

安装Mariadb :(端口系统默认为3306)

centos7系统上默认用的是mariadb,centos6系统上用的是mysql,他们之间本质上是没有区别的。

Mariadb安装方式

检查环境
iptables
selinux
mariadb-server (查看系统上是否已经安装过mariadb包了)

1、源代码:编译安装

捕获

1 . 下载源码;上图的官网里下载:https://downloads.mariadb.org/mariadb/10.2.15/

2 . 安装编译所需要的的包:

yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boostdevel gcc gcc-c++ cmake libevent-devel gnutls-devel libaio-devel openssldevel ncurses-devel libxml2-devel

3 . useradd -r -s /sbin/nologin mysql  (创建用户)

4 . 将源码解压缩:tar xvf mariadb-10.2.15.tar.gz

5 . mkdir -pv /data/mysqldb          chown mysql.mysql /data/mysqldb    (创建数据库的目录,并指定其所有者和所有组)

6 . 将解压缩的源码进行编译:

cd mariadb-10.2.15/(要先进入到源码解压缩后的文件夹下)

cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \  (程序安装路径)
-DMYSQL_DATADIR=/data/mysqldb/ \      (库文件存放路径)
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/app/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

(执行此命令一定要按照上述格式来执行)

7 . make – j  4  &&  make  install     (开始编译安装)

8 .准备环境变量

echo ‘PATH=/app/mysql/bin:$PATH’ > /etc/profile.d/mysql.sh  (将编译的二进制程序目录添加到PATH变量里去)

. /etc/profile.d/mysql.sh (让PATH变量生效)

9 . 生成数据库文件

cd /app/mysql/  (进到此目录下)

scripts/mysql_install_db –datadir=/data/mysqldb/ –user=mysql

(执行此脚本,此脚本为生成数据库的配置文件)

10 . 准备配置文件

cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf

修改/etc/my.cnf的配置文件:

datadir = /data/mysqldb     (添加此行指定其数据库目录的路径)

11 . 准备启动脚本

cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld

(将编译好的二进制启动脚本复制到init.d的启动管理去。)

setfacl -R -m u:mysql:rwx /app/mysql/  (对mysql用户增加对/app/mysql/目录的读写执行的权限)

12 . 启动服务

chkconfig –add mysqld    (将mysqld加入到开机启动项里)

chkconfig  –list         (查看启动列表项)

service mysqld start

 

2、二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用

1.  下载二进制包:

https://downloads.mariadb.org/mariadb/10.2.15/ (在此官网就可以下载)

二进制包:mariadb-10.2.15-linux-x86_64.tar (带有linux而且在400M以上)

 

捕获1

2 . 新建用户

创建数据库的用户账号:useradd -r -d /app/mysql  -s /sbin/nologin mysql

3 .  解压缩:

tar -xvf mariadb-10.2.15-linux-x86_64.tar.gz   -C /usr/local(此解压路径是根据它源码编译时指定的路径,可以到官网上查到)

4 . 进入到cd /usr/local目录下指定软连接:ln -s mariadb-10.2.15-linux-x86_64/ mysql 指定好了之后。后面的操作就可以使用mysql,而不是要写mariadb-10.2.15-linux-x86_64/一长串了。

5 . 进入到mysql目录下发现所有文件的账号都是500,所以要将其用户账号更改为root所有

回到  /usr/local目录下更改mysql目录及目录下的文件的所有者所属组:chown -R root: mysql/

在此文件夹下/usr/local/mysql/bin/有许多要执行的文件,需要将其加入到$PATH变量里 ,以后执行不必在写绝对路径了。

echo PATH=/usr/local/mysql/bin:$PATH > /etc/profile.d/mysql.sh  (加入$PATH变量里)

. /etc/profile.d/mysql.sh    (让文件生效)

6. 指定以后数据库存放的路径:

因为数据库需要大的存储空间,可以考虑使用逻辑卷来管理,如果存储空间不够的话还可以重新在扩容。

新加一块虚拟硬盘:同步硬盘:echo ‘- – -‘ > /sys/class/scsi_host/host2/scan

新加的硬盘不用分区,直接创建逻辑卷就可以了。

pvcreate /dev/sdb    (变成物理卷)

vgcreate vg0 /dev/sdb  (创建卷组vg0)

lvcreate -n lv_mysql -l 100%FREE vg0(创建逻辑卷lv_mysql,并将卷组的空间全部用完)

mkfs.xfs   /dev/vg0/lv_mysql    (创建文件系统)

创建文件夹(此文件夹为,刚才创建用户时指定的家目录)mkdir  /app/

并挂载到刚刚创建的逻辑卷里:(写到磁盘里面)

vim /etc/fstab

UUID=2e6b78f8-fefa-451b-aa5f-aa4199367f08 /app/ xfs defaults 0 0

mount  -a  (让挂载生效)

mkdir /app/mysqldb  (将文件夹建立起来)

chown mysql.mysql /app/mysqldb   (将文件夹的所有者和所属组都改为mysql)

7 . 生成数据库的必要配置文件

执行一个脚本就可以了,此脚本在mysql的程序文件夹下/usr/local/mysql/scripts

scripts/mysql_install_db –datadir=/app/mysqldb –user=mysql(执行此脚本。并指定生成的配置文件存放的路径为刚刚创建的数据库的路径)  有0k代表执行成功了。

执行此脚本必须要在/usr/local/mysql  此目录下因为此脚本有依赖。

8 . 修改配置文件,告诉数据库存放的路径:

/usr/local/mysql/support-files/my-huge.cnf  (大环境下使用,但只有2G)

cp /usr/local/mysql/support-files/my-huge.cnf /etc/my.cnf  (将二进制程序里的模板文件复制到mysql的配置文件下修改)

vim  /etc/my.cnf

捕获123

9 . 启动服务:(将二进制程序里的启动脚本复制出来,到init.d里使其变成服务脚本)

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

chkconfig –add mysqld(将服务脚本加到启动程序里)

可以通过chkconfig  –list   来查看是否添加到启动程序里了。

手动开启服务即可:service mysqld start  (如果起不来直接启程序;./mysqld   start )

3、程序包管理器管理的程序包安装。

1 . 本身光盘里有mariadb的rpm包,只需用yum 安装一下就可以了:

此包为系统自带的版本,版本较低

yum  install  mariadb-server  (服务端)装好后连客户端一起安装了(yum install mariadb)

systemctl  start mariadb   (启动服务)

systemctl  stop  mariadb   (暂停服务)

mysql  (进入数据库)        quit/exit  (退出数据库)

2. 到官网安装:(已配好了的yum源复制过来建个仓库就可以了)

可以安装最新的版本。

https://downloads.mariadb.org/mariadb/repositories/   (官网地址)

捕获千万人

 

将yum源复制到自己所配的仓库里,然后安装就可以了.

yum  install  MariaDB   (注意大小写就可以了,查看外网是否通)

安装完启动服务就可以了:systemctl   start   mariadb

在系统里如果光盘里有mariadb的老版本和新的yum版本,会默认安装最新的版本。

 

 

实验:mysql(mariadb)多实例安装: (既在一台主机上安装多个数据库)

由于mysql使用的都是默认的3306端口,所以在安装多个数据库时要将其端口修改一下。

1 . 首先yum 安装一个mariadb ;yum install mariadb

2 . 创建目录来存放三个实例:

mkdir /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data} -pv  (创建每个实例所需的文件夹)

目录结构:

/mysql/
├── 3306
│   ├── data
│   ├── etc
│   ├── log
│   ├── pid
│   └── socket
├── 3307
│   ├── data
│   ├── etc
│   ├── log
│   ├── pid
│   └── socket
└── 3308
├── data   (此目录是存放数据库文件)
├── etc      (存放配置文件的)
├── log        (存放日志文件的)
├── pid
└── socket    (存放socket文件的)

3 .  由于yum已经安装了mariadb ,所以mysql用户已经建立了。

chown -R mysql.mysql /mysqldb/   (将刚才创建的文件夹的所有者和所属组都设为mysql)

4 .创建数据库的配置文件:
mysql_install_db –datadir=/mysqldb/3306/data –user=mysql       (创建3306的)

mysql_install_db –datadir=/mysqldb/3307/data –user=mysql            (创建3307的)

mysql_install_db –datadir=/mysqldb/3308/data –user=mysql             (创建3308的)

如果是二进制安装或编译安装: 需要在后面添加 –basedir= xxxx

xxx需要在连接mysql 后输入show variables like ‘%basedir%’;  来查看路径。

如果是二进制安装或者编译安装,执行此条命令要进入到mysql_install_db此脚本的上级目录,如何查找他的路径请看上面两种安装时此脚本呢的具体路径。

5 .  创建/etc /的配置文件;默认路径在/etc/my.cnf

cp /etc/my.cnf /mysqldb/3306/etc/

cp /etc/my.cnf /mysqldb/3307/etc/

cp /etc/my.cnf /mysqldb/3308/etc/

然后修改配置文件:

vim   /mysqldb/3306/etc/my.cnf

vim /mysqldb/3307/etc/my.cnf

vim   /mysqldb/3308/etc/my.cnf

然后将每个文件都 按下图来修改:

捕获

6 . cp mysqld /mysqldb/3306/(将事先准备好的脚本复制到各个目录下)

cp mysqld /mysqldb/3306/

cp mysqld /mysqldb/3307/

cp mysqld /mysqldb/3308/

然后将复制过去的脚本文件修改一下对应的端口号就可以了。(如果是编译安装或者是二进制安装,此脚本还要将目录更改一下cmd_path=”/app/mysql/bin”  此地址为自己编译安装时的bin的地址)

7 . 将系统已有的服务暂停;

systemctl stop mariadb

给各个脚本添加执行权限:

chmod 700 /mysqldb/3306/mysqld

chmod 700 /mysqldb/3307/mysqld

chmod 700 /mysqldb/3308/mysqld

最后走一遍启动脚本:

/mysqldb/3306/mysqld start    (stop 为停止)

/mysqldb/3307/mysqld start

/mysqldb/3308/mysqld start

服务启动之后;连接实例;由于实例的socket文件不在默认的路径,所以直接mysql无法连接实例

只有这样:mysql -S /mysqldb/3308/socket/mysql.sock  (连接)

多实例中的两个重要的配置文件要改对:/mysqldb/3306/mysqld此脚本文件和/mysqldb/3306/etc/my.cnf)

 

安全加固脚本:

mysiql服务安装好后,由于没有设置密码,需要跑一个脚本来设定密码。

nmysql_secure_installation  (开启服务之后运行此脚本)

是否设置root口令 y
是否删除匿名用户 y
是否允许root远程登录 运行此脚本,交互式

是否删除test数据库 y
privilege tables y

 

 

以下为mysqld的脚本详细。

#!/bin/bash

port=3307
mysql_user=”root”
mysql_pwd=””
cmd_path=”/usr/bin”
mysql_basedir=”/mysqldb”
mysql_sock=”${mysql_basedir}/${port}/socket/mysql.sock”

function_start_mysql()
{
if [ ! -e “$mysql_sock” ];then
printf “Starting MySQL…\n”
else
printf “MySQL is running…\n”
exit
fi
}

function_stop_mysql()
{
if [ ! -e “$mysql_sock” ];then
if [ ! -e “$mysql_sock” ];then
printf “Starting MySQL…\n”
${cmd_path}/mysqld_safe –defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null &
else
printf “MySQL is running…\n”
exit
fi
}

function_stop_mysql()
{
if [ ! -e “$mysql_sock” ];then
printf “MySQL is stopped…\n”
exit
else
printf “Stoping MySQL…\n”
${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
fi
}

function_restart_mysql()
{
printf “Restarting MySQL…\n”
function_stop_mysql
sleep 2
function_start_mysql
}

case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf “Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n”
esac

 

二进制自动安装脚本:

捕获

此脚本里有让环境变量生效的. /etc/profile.d/mysql.sh 如果只是普通的执行脚本的话此环境变量只在脚本里生效,当脚本执行完了退出后之后此文件并不能生效。所以在执行脚本时用source mariadb.sh执行后就会在全局生效了。

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/100334

发表评论

登录后才能评论

评论列表(1条)

  • 单爆手
    单爆手 2018-06-06 12:47

    将事先准备好的脚本复制到各个目录下?请问是哪个脚本,没写明,

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班