文章目录
介绍
MySQL是一种流行的开源关系型数据库管理系统(RDBMS),它是由瑞典公司MySQL AB开发,并由Oracle公司开发和支持。MySQL被广泛应用于Web应用程序开发,是许多网站和应用程序的首选数据库系统之一。
主要特点:
-
开源免费: MySQL是开源软件,可以免费使用,这使得它成为了许多小型和中小型企业的首选数据库解决方案。
-
跨平台支持: MySQL可以在多种操作系统上运行,包括Linux、Windows、macOS等,这使得它具有很高的灵活性和可移植性。
-
高性能: MySQL被优化以提供高性能的数据访问和查询处理能力。它能够处理大规模数据集和高并发请求,适用于各种类型的应用场景。
-
可扩展性: MySQL支持水平和垂直扩展,可以通过复制、分区、集群等方式来扩展数据库的性能和容量。
-
易用性: MySQL具有简单易用的特点,其SQL语言易于学习和使用,同时提供了丰富的工具和文档资源,方便开发人员进行数据库管理和应用开发。
-
丰富的功能: MySQL支持许多高级功能,如事务、触发器、存储过程、视图等,可以满足各种复杂的业务需求。
-
安全性: MySQL提供了丰富的安全功能,包括数据加密、访问控制、身份验证等,可以保护数据库的安全性和完整性。
应用场景:
-
Web应用程序: MySQL是许多Web应用程序的首选数据库解决方案,包括电子商务网站、社交网络、博客平台等。
-
数据分析: MySQL可以用于存储和分析大规模数据集,支持数据挖掘、业务智能等数据分析应用。
-
日志和监控系统: MySQL可以用于存储和管理日志数据、监控数据等,用于系统性能监控、故障诊断等用途。
-
在线交易处理(OLTP)系统: MySQL适用于支持高并发的在线交易处理系统,如电子支付系统、在线预订系统等。
-
内容管理系统(CMS): 许多CMS系统如WordPress、Joomla等都使用MySQL作为后端数据库存储数据。
二进制脚本安装mysql
安装脚本
注意:脚本与安装包放置同一目录(博主常放在/tmp/下)
下载软件包地址
wget http://dev.MySQL.com/get/Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
百度网盘分享:
链接:超链接地址
提取码:df62
shell安装脚本步骤:
- 检查用户是否root
- 检查有没有mysql组
- 检查有没有mysql用户
- 判断mysql安装目录是否创建
- 判断mysql软件包是否存在
- yum安装两个插件
- 配置my.cnf文件
- 设置mysql数据目录权限
- 创建安装目录下文件
- 配置开机启动
- 初始化数据库
- 设置环境变量
脚本:
#!/bin/bash
echo "mysql 初始化安装脚本"
<<COMMENT
这些是注释内容:
VERSION: 1.0
MYSQL版本:5.7.21
COMMENT
######################定义变量######################
GROUP_NAME=mysql
USER_NAME=mysql
MYSQLDB_HOME=/usr/local/mysql
MYSQLDB_DATA_HOME=/data/mysql/
MYSQL_VERSION="mysql-5.7.21-linux-glibc2.12-x86_64"
###################################################
#检查用户是否为root
if [ $(id -u) != "0" ]; then
echo "Error: You must be root to run this script!"
exit 1
fi
# echo "========================================================================="
echo " install MySQL 5.7.21 on Redhat/CentOS Linux "
echo "========================================================================="
#addGroup
if [ -z $(cat /etc/group | awk -F: '{print $1}' | grep -w "$GROUP_NAME") ]; then
groupadd $GROUP_NAME
if (($? == 0)); then
echo "group $GROUP_NAME add sucessfully!"
fi
else
echo "$GROUP_NAME is exsits"
fi
#addUser
if [ -z $(cat /etc/passwd | awk -F: '{print $1}' | grep -w "$USE_NAME") ]; then
adduser -g $GROUP_NAME $USER_NAME
if (($? == 0)); then
echo "user $USER_NAME add sucessfully!"
fi
else
echo "$USER_NAME is exsits"
fi
# 判断mysql安装目录是否创建
if [ -d $MYSQLDB_HOME ]; then
echo "目录已创建"
else
mkdir -p $MYSQLDB_HOME
fi
# 判断mysql软件包是否存在
if [ -f ${MYSQL_VERSION}.tar.gz ]; then
tar -zxvf $MYSQL_VERSION.tar.gz
mv $MYSQL_VERSION/* $MYSQLDB_HOME/
else
echo "没有发现mysql二进制文件"
echo "请将mysql二进制文件放到和本脚本在同一目录中"
exit 2
fi
# 安装libaio
yum -y install libaio
yum -y install numactl
if [ -s /etc/my.cnf ]; then
mv /etc/my.cnf /etc/my.cnf.$(date +%Y%m%d%H%M%S).bak
fi
echo "====================安装mysql5.7.21=========================="
# 创建mysql配置文件:
cat >>/etc/my.cnf <<EOF
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/tmp/mysql.sock
[mysqld]
#skip-grant-tables
skip-name-resolve
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/data/mysql
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
max_allowed_packet=16M
key_buffer_size=32MB
# innodb参数
innodb_buffer_pool_size=512MB
#该命令用于在关闭时把热数据dump到本地磁盘
innodb_buffer_pool_dump_at_shutdown=1
#在启动时把热数据加载到内存
innodb_buffer_pool_load_at_startup=1
#避免双写缓冲的参数:
innodb_flush_method=O_DIRECT
innodb_lock_wait_timeout=50 # 锁等待超时时间 单位秒
#启用标准InnoDB监视器
innodb_status_output=ON
# 查询缓存
#开启慢查询日志:
slow_query_log=1
slow_query_log_file=master.slow
long_query_time=2
#配置错误日志:
log-error=/usr/local/mysql/log/mysql_error.log
# 复制的参数
log_bin=master-bin
server_id=10
binlog_format=ROW
sync_binlog=1
sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# 启用gtid复制:
gtid_mode=ON
enforce-gtid-consistency=true
max_connections = 1000
max_connect_errors = 1000
wait_timeout = 30
innodb_log_file_size=1500M
EOF
# 设置mysql数据目录权限
if [ -d $MYSQLDB_DATA_HOME ]; then
echo "目录已存在"
else
mkdir -p $MYSQLDB_DATA_HOME
chown -R mysql:mysql $MYSQLDB_DATA_HOME
echo "目录和权限创建成功!"
fi
# 创建安装目录下的日志文件
mkdir -p $MYSQLDB_HOME/log
touch $MYSQLDB_HOME/log/mysql_error.log
#touch $MYSQLDB_HOME/log/mysql-slow.log
chown -R mysql:mysql $MYSQLDB_HOME
# 配置开机启动
function add_auto_start {
cp $MYSQLDB_HOME/support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
}
# 初始化数据库
cd $MYSQLDB_HOME/bin/
./mysqld --initialize --user=mysql --basedir=$MYSQLDB_HOME/ --datadir=$MYSQLDB_DATA_HOME
# 设置环境变量
echo 'export PATH=$PATH:/usr/local/mysql/bin/' >>/etc/profile
source /etc/profile
echo "mysql 5.7.21 安装完成,密码文件请查看$MYSQLDB_HOME/log/mysql_error.log 文件"
sleep 5
#########################################################################################
add_auto_start
启动
查看密码文件,得知密码
红框内为密码
systemctl start mysqld # 启动数据库
mysql -u root -p'输入密码' # 或者回车输入密码登录进去
注意要是进入不了数据库,那么采取忘记密码处理
进入/etc/my.cnf里边把skip-grant-tables字段前"#"去掉,然后重启数据库
systemctl restart mysqld
然后再进去修改密码
进入数据库修改密码
改密码 进入数据库
flush privileges;
set password for 'root'@'localhost'=password('123@123');
flush privileges;
修改改密码后关闭无密码进入
再进入/etc/my.cnf里找到skip-grant-tables字段再前边加上"#",然后重启数据库即可
Docker方式进行部署(第二种方式)
先安装docker以及docker-compose
docker-compose安装
这个是官方地址,可能比较慢,推荐使用下面的国内镜像地址
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
国内镜像地址
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
下载完之后可以看下 /usr/local/bin 这个目录有没有 docker-compose 这个文件
docker-compose.yml
version: '3'
services:
mysql:
image: mysql:5.7.21
container_name: mysql-5.7.21
#使用该参数,container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限
#设置为true,不然数据卷可能挂载不了,启动不起
privileged: true
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: root
MYSQL_PASS: root
TZ: Asia/Shanghai
command:
--wait_timeout=31536000
--interactive_timeout=31536000
--max_connections=1000
--default-authentication-plugin=mysql_native_password
volumes:
#映射mysql的数据目录到宿主机,保存数据
- "/data/mysql/data:/var/lib/mysql"
#根据宿主机下的配置文件创建容器
- "/data/mysql/config/my.cnf:/etc/mysql/my.cnf"
在安装目录下创建config目录,并编写my.cnf配置文件,根据自己需求进行添加配置文件
mkdir -p /data/mysql/config/
cat >> /data/mysql/config/my.cnf <<EOF
[client]
# 客户端来源数据的默认字符集
default-character-set=utf8mb4
[mysqld]
# 服务端默认字符集
character-set-server=utf8mb4
# 连接层默认字符集
collation-server=utf8mb4_unicode_ci
[mysql]
# 数据库默认字符集
default-character-set=utf8mb4
EOF
# 启动mysql
docker-compose up -d
# 查看是否启动成功
docker-compose ps
# 登录mysql(先安装好客户端)
yum -y install mysql
mysql -u root -p'root'
mysql其他命令参考
# 改密码 进入数据库
set password for 'root'@'localhost'=password('123@123');
# 刷新权限
flush privileges;
# 支持root用户允许远程连接mysql数据库
grant all privileges on *.* to 'root'@'%' identified by '123@123' with grant option;
授权小知识
grant all privileges on test.* to 'test'@'%' identified by 'test';
grant 全部权限 on 数据库.表名称 to 用户名@登录主机 identified by ‘密码’;
将test数据库下所有的表(*代表所有的表)的权限给test用户,指定允许登录的主机为所有,用户密码为test
最后刷新权限
flush privileges;