一, 实验目的
mariadb 属于关系型数据库, 通过此实验掌握 mariadb 数据库的二进制安装
二, 实验准备
mariadb-10.2.23-Linux-x86_64.tar.gz 安装包, 虚拟机需要安装 expect 包
三, 实验脚本
- VIM /data/MySQL.sh
- #!/bin/bash
- #create group user 创建用于 MySQL 服务的组和用户
- groupadd -r -g 336 MySQL #创建 MySQL 组, 系统组, gid336
- useradd -r -g MySQL -u 336 -s /sbin/nologin -d /data/MySQL MySQL #创建用户 MySQL, 系统用户, 指定主组 MySQL,uid336,shell 类型 / sbin/nologin, 家目录 / data/MySQL(需手动创建)
- #tar and link 解压文件和创建软链接
- tar xvf /data/mariadb-10.2.23-Linux-x86_64.tar.gz -C /usr/local/ #解压文件至 / usr/local / 目录下
- cd /usr/local/
- ln -s mariadb-10.2.23-Linux-x86_64/ MySQL #创建软链接 MySQL 指向 mariadb-10.2.23-Linux-x86_64
- chown -R root.root /usr/local/MySQL/ #递归修改 MySQL 的属主和属组为 root
- #PATH 修改变量 PATH, 让安装包自带脚本可以执行
- echo "PATH=/usr/local/mysql/bin:$PATH">> /etc/profile #将自带脚本路径添加到变量, 也可以在 / etc/profile.d / 下自己创建. sh 后缀的文件存放
- source /etc/profile #使变量存放文件生效
- #create LV 创建卷组, 用来存储数据库, 方便容量不够时扩展
- mkdir /data/MySQL #创建数据库存放目录
- pvcreate /dev/sdb #创建物理卷
- vgcreate vg0 /dev/sdb #创建卷组
- lv -n MySQL -L 10G vg0 #创建名为 MySQL, 大小 10G 的逻辑卷
- mkfs.xfs /dev/vg0/MySQL #将逻辑卷文件系统制作为 xfs
- mount /dev/vg0/MySQL /data/MySQL #挂载至 / data/MySQL 目录下
- #data 准备数据库数据及目录
- chown MySQL.MySQL /data/MySQL/ #修改数据库属主属组
- cd /usr/local/MySQL
- ./scripts/mysql_install_db --datadir=/data/MySQL --user=MySQL #以指定目录和身份生成数据库
- #service 准备 MySQL 服务端的配置文件
- mkdir /etc/MySQL
- cp /usr/local/MySQL/support-files/my-huge.cnf /etc/MySQL/my.cnf #拷贝模板文件
- sed -i "/\[mysqld\]/adatadir=\/data\/mysql" /etc/MySQL/my.cnf #在 [mysqld] 后添加 datadir=/data/MySQL
- #start script 准备服务启动脚本
- cp /usr/local/MySQL/support-files/MySQL.server /etc/init.d/mysqld
- chkconfig --add mysqld #将服务加入开机启动
- service mysqld start #启动服务
- #securety 安全加固
- expect <<EOF
- spawn mysql_secure_installation #安全加固脚本, 可以重新设置密码
- expect "none" {
- send "\n"
- }
- expect "none" {
- send "\n"
- }
- expect "password" {
- send "y\n"
- }
- expect "New" {
- send "123456\n"
- }
- expect "Re-enter" {
- send "123456\n"
- }
- expect "anonymous" {
- send "y\n"
- }
- expect "login" {
- send "y\n"
- }
- expect "database" {
- send "y\n"
- }
- expect "privilege" {
- send "y\n"
- }
- expect eof
- EOF
测试连接
MySQL -uroot -p"password"
执行结果显示 MySQL 命令未找到, 原因是脚本在一个新的子 bash 进程里面执行, 在这个子 bash 进程里面执行的 PATH 变量添加, 刷新并不能继承至父进程, 这才导致 PATH 变量文件虽然里面有新的路径加入, 却还是显示命令未找到, 解决方法是再次使文件生效, 即 source /etc/profile 或. /etc/profile
来源: http://www.bubuko.com/infodetail-3037882.html