linux 安装mysql 5.7.21


介绍

MySQL是一种流行的开源关系型数据库管理系统(RDBMS),它是由瑞典公司MySQL AB开发,并由Oracle公司开发和支持。MySQL被广泛应用于Web应用程序开发,是许多网站和应用程序的首选数据库系统之一。

主要特点:

  1. 开源免费: MySQL是开源软件,可以免费使用,这使得它成为了许多小型和中小型企业的首选数据库解决方案。

  2. 跨平台支持: MySQL可以在多种操作系统上运行,包括Linux、Windows、macOS等,这使得它具有很高的灵活性和可移植性。

  3. 高性能: MySQL被优化以提供高性能的数据访问和查询处理能力。它能够处理大规模数据集和高并发请求,适用于各种类型的应用场景。

  4. 可扩展性: MySQL支持水平和垂直扩展,可以通过复制、分区、集群等方式来扩展数据库的性能和容量。

  5. 易用性: MySQL具有简单易用的特点,其SQL语言易于学习和使用,同时提供了丰富的工具和文档资源,方便开发人员进行数据库管理和应用开发。

  6. 丰富的功能: MySQL支持许多高级功能,如事务、触发器、存储过程、视图等,可以满足各种复杂的业务需求。

  7. 安全性: MySQL提供了丰富的安全功能,包括数据加密、访问控制、身份验证等,可以保护数据库的安全性和完整性。

应用场景:

  1. Web应用程序: MySQL是许多Web应用程序的首选数据库解决方案,包括电子商务网站、社交网络、博客平台等。

  2. 数据分析: MySQL可以用于存储和分析大规模数据集,支持数据挖掘、业务智能等数据分析应用。

  3. 日志和监控系统: MySQL可以用于存储和管理日志数据、监控数据等,用于系统性能监控、故障诊断等用途。

  4. 在线交易处理(OLTP)系统: MySQL适用于支持高并发的在线交易处理系统,如电子支付系统、在线预订系统等。

  5. 内容管理系统(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安装脚本步骤:

  1. 检查用户是否root
  2. 检查有没有mysql组
  3. 检查有没有mysql用户
  4. 判断mysql安装目录是否创建
  5. 判断mysql软件包是否存在
  6. yum安装两个插件
  7. 配置my.cnf文件
  8. 设置mysql数据目录权限
  9. 创建安装目录下文件
  10. 配置开机启动
  11. 初始化数据库
  12. 设置环境变量

脚本:

#!/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;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XMYX-0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值