下载地址
CentOS 安装光盘
项目官方:https://downloads.mariadb.org/mariadb/repositories/
国内镜像:
https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/ https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/
常用命令
CentOS7默认只有mariadb CentOS6默认只有mysql
修改MySQL密码mysqladmin –uroot –pcentos password 'magedu'
root是帐号,centos是密码;mysql -u root -p centos
查看数据库:show databases
进入数据库: use mysql
查看数据库:select user
显示当前数据库的列表:show tables
查看表内容:SELECT User,Host,Password FROM user;
描述这张表:desc user
数据库安全加固
运行脚本:mysql_secure_installation
设置数据库管理员root口令
禁止root远程登录
删除anomyous用户账号
删除test数据库
调用sql脚本
- souce test.sql
- \./data/test.sql
- 不登录执行命令
- mysql -uroot -pmagedu < /data/test.sql
- cat /data/test.sql | mysql uroot -pmagedu
#查看mysql版本
mysql -v
#修改提示符(提示避免误操作)
#查看添加的提示符:mysql --print-defaults -v
/etc/my.cnf.d/mysql-clients.cnf
MYSQLadmin命令
mysqladmin –help #查看帮助
mysqladmin -uroot -pcentos ping #查看mysql服务是否正常,如果正常提示mysqld is alive
mysqladmin -uroot –pcentos create testdb #创建数据库testdb
mysqladmin -uroot -pcentos drop testdb #删除数据库testdb
mysqladmin -uroot -pcentos flush-logs #日志滚动,生成新文件/var/lib/mysql/ mariadb-bin.00000N
#MySQL改密码
mysqladmin –uroot –pcentos password 'magedu'
关闭数据库
#关闭数据库但mysqladmin命令无法开启
mysqladmin –uroot –pcentos shutdown
#关闭数据库
systemctl stop mariadb
#关闭网络连接,只侦听本地客户端
[centos]$ vim /etc/my.cnf
[mysqld]
skip-networking=1
#所有和服务器的交互都通过一个socket实现,socket的配置存放在/var/lib/mysql/mysql.sock) 可在/etc/my.cnf修改
MYSQL安装
yum安装
yum -y install mariadb-server
下载地址https://downloads.mariadb.org
通用二进制方式安装MYSQL
#下载地址:wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz
1.准备用户
#创建账号和id
groupadd -r -g 306 mysql
useradd -r -g 306 -u 306 -d /data/mysql mysql
2.准备数据目录,建议使用逻辑卷
#可选做,后面的脚本mysql_install_db可自动生成此目录 mkdir
/data/mysql
#更改所有者所属组
chown mysql:mysql /data/mysql
2.1 创建一个30G分区并且创建逻辑卷
fdisk /dev/sda
p
n
+30G
t
6
8e
w
#需要安装工具(yum -y install lvm)
pvcreate /dev/sda6
#创建卷组
vgcreate vg0 /dev/sda6
#加入卷组
lvcreat -n mysql -l 100%free vg0
#创建文件系统
mkfs.ext4 /dev/vg0/mysql
#为了持久保存UUID写到系统Vim /etc/fstab
#查找UUID r!blkid /dev/vg0/mysql
#创建文件夹并且挂载
mkdir /data/mysql
mount -a
3.准备二进制程序
tar xf mariadb-VERSION-linux-x86_64.tar.gz -C /usr/local
cd /usr/local
ln -sv mariadb-VERSION mysql
chown -R root:root /usr/local/mysql/
4 准备配置文件
cd /usr/local/mysql
cp -b support-files/my-large.cnf /etc/my.cnf
vim /etc/my.cnf
#mysql语句块中添加以下三个选项
[mysqld]
datadir = /data/mysql
innodb_file_per_table = on #在mariadb5.5以上版的是默认值,可不加 skip_name_resolve = on #禁止主机名解析,建议使用
5 创建数据库文件
cd /usr/local/mysql/
./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
[root@centos8 mysql]#ls /data/mysql/ -l
total 110604
-rw-rw---- 1 mysql mysql 12582912 Jun 1 16:44 ibdata1
-rw-rw---- 1 mysql mysql 50331648 Jun 1 16:44 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 Jun 1 16:44 ib_logfile1
drwx------ 2 mysql mysql 4096 Jun 1 16:44 mysql
drwx------ 2 mysql mysql 4096 Jun 1 16:44 perfor
drwx------ 2 mysql mysql 4096 Jun 1 16:44 test
6 准备服务脚本,并启动服务
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld chkconfig --add mysqld
service mysqld start
#如果有对应的service 文件可以执行下面
cp support-files/systemd/mariadb.service/usr/lib/systemd/system/
systemctl daemon-reload
systemctl enable --now mariadb
7 PATH路径
echo ‘PATH=/user/local/mysql/bin:$PATH’ > /etc/profile.d/mysql.sh . /etc/profile.d/mysql.sh
8 安全初始化
/user/local/mysql/bin/mysql_secure_installation
9.设置开机启动
vim /etc/rc.d/rc.local
#开机启动的文件路径写到脚本
/etc/init.d/mysql start
chmod +x /etc/rc.d/rc.local
编译安装
1.安装相关依赖包
yum -y install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel
2.做准备用户和数据目录
useradd -r -s /sbin/nologin -d /data/mysql mysql
3.准备数据库目录
mkdir /data/mysql
chown mysql.mysql /data/mysql
编译选项:https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
4.下载并解压缩源码包
tar xvf mariadb-10.2.18.tar.gz
5.源码编译安装mariadb
cd mariadb-10.2.18/
cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \ -DMYSQL_DATADIR=/data/mysql/ \ -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=/data/mysql/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci make && make install
提示:如果出错,执行rm -f CMakeCache.txt
6.准备环境变量
echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh . /etc/profile.d/mysql.sh
7.生成数据库文件
cd /app/mysql/
scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql
8.准备配置文件
cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf
9.准备启动脚本,并启动服务
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld
service mysqld start
10.安全初始化
mysql_secure_installation
实战案例:一键安装mysql-5.6二进制包的脚本
#!/bin/bash
#mysql-install.sh
DIR=`pwd`
NAME="mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz"
FULL_NAME=${DIR}/${NAME}
DATA_DIR="/data/mysql"
yum install libaio perl-Data-Dumper vim gcc gcc-c++ wget autoconf net-tools lrzsz -y
yum install curl policycoreutils openssh-server openssh-clients postfix -y
if [ -f ${FULL_NAME} ];then
echo "安装文件存在"
else
echo "安装文件不存在"
exit 3
fi
if [ -h /usr/local/mysql ];then
echo "Mysql 已经安装"
exit 3
else
tar xvf ${FULL_NAME} -C /usr/local/src
ln -sv /usr/local/src/mysql-5.6.34-linux-glibc2.5-x86_64 /usr/local/mysql
if id mysql;then
echo "mysql 用户已经存在,跳过创建用户过程"
else
useradd -r -s /sbin/nologin mysql
fi
if id mysql;then
chown -R mysql.mysql /usr/local/mysql/*
if [ ! -d /data/mysql ];then
mkdir -pv /data/mysql && chown -R mysql.mysql /data -R
/usr/local/mysql/scripts/mysql_install_db --user=mysql -datadir=/data/mysql --basedir=/usr/local/mysql/
cp /usr/local/src/mysql-5.6.34-linux-glibc2.5-x86_64/supportfiles/mysql.server /etc/init.d/mysqld
chmod a+x /etc/init.d/mysqld
cp ${DIR}/my.cnf /etc/my.cnf
ln -sv /usr/local/mysql/bin/mysql /usr/bin/mysql
/etc/init.d/mysqld start
chkconfig --add mysqld
else
echo "MySQL数据目录已经存在,"
exit 3
fi
fi
fi
#my.cnf
[mysqld]
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
datadir=/data/mysql
innodb_file_per_table=1
[client]
port=3306
socket=/var/lib/mysql/mysql.sock
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/tmp/mysql.pid