MySQL | MySQL5.7.* 安装
清理系统环境
清理系统环境,保证安装时没有打扰。
# 查看系统是否自带 mariadb-lib
rpm -qa | grep mariadb
# 如果有,输出:mariadb-libs-5.5.44-2.el7.centos.x86_64 ,没有,不输出
# 卸载 mariadb-lib
rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
rpm 方式安装
下载安装包
可以去MySQL官网去下载。
下载完成之后,出现这么多文件:

其中就四个有用的:
mysql-community-client-5.7.25-1.el7.x86_64.rpm
mysql-community-libs-5.7.25-1.el7.x86_64.rpm
mysql-community-common-5.7.25-1.el7.x86_64.rpm
mysql-community-server-5.7.25-1.el7.x86_64.rpm
并且安装的时候也需要按照这个顺序进行安装。
上传到服务器
把解压出来的四个文件,重新压缩为 zip 格式的压缩文件,并上传到服务器。
使用 unzip 解压这个压缩文件。
使用 rpm 对mysql 进行安装
# 顺序执行以下命令
rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm
# 安装 MySQL
mysqld --initialize --user=mysql
启动并登录 MySQL
刚刚安装时,因为是安全模式,所以会生成一个随机密码,所以这时必须先要得到那个随机密码:
# 获取随机密码
grep 'root@localhost' /var/log/mysqld.log | awk '{print $NF}'
启动 MySQL
systemctl start mysqld.service
登录 MySQL
mysql -uroot -p
# 然后输入刚刚得到的随机密码
修改 root 密码
安装时,生成的root密码只是一个临时密码,所以说进入数据库的第一件事,必须是修改密码,不然无法进行别的操作。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
flush privileges;
修改密码时,可能会报错,那是因为密码设置的太简单了。
报错
如果使用 rpm 包安装的时候,遇到下面这种情况:
libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-5.7.16-1.el7.x86_64
net-tools is needed by mysql-community-server-5.7.16-1.el7.x86_64
表示的意思就是缺少依赖包了。
只需要使用:
yum -y install libaio
yum -y install net-tools
Win10 安装MySQL
下载安装包
官网
或者
百度网盘--> software
解压后创建文件夹
在解压后的文件夹中创建 /data & my.ini 两个文件。
初始化 my.ini 文件
[mysqld]# 设置3306端口
port=3306# 设置mysql的安装目录
basedir=D:\mysql-5.7.27-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\mysql-5.7.27-winx64\data
# 允许最大连接数
max_connections=200# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎default-storage-engine=INNODB
[mysql]# 设置mysql客户端默认字符集default-character-set=utf8
[client]# 设置mysql客户端连接服务端时默认使用的端口
port=3306default-character-set=utf8
初始化MySQL
在解压后的文件夹中,进入cmd
mysqld --initialize --user=mysql --console
初始化mysql后,可能出来初始密码。注意保存
添加服务
mysqld -install
启动服务
net start mysql # 启动服务
net stop mysql # 停止服务
进入MySQL修改密码
update mysql.user set authentication_string=password('kiwi') where user='root' and Host = 'localhost';
flush privileges;
如果mysql 初始化密码登录不进去:
强制修改密码
停止MySQL服务
net stop mysql
使用文件启动 MySQL
mysqld --defaults-file="D:\Program Files (x86)\mysql-5.7.29-winx64\my.ini" --skip-grant-tables
使用另外一个窗口进入命令行,直接进入:
mysql -uroot -p
然后修改密码。
二进制安装
使用脚本进行安装:
#!/bin/bash
echo "初始化安装脚本"
<<COMMENT
注:
AUTHOR: Frost boy
CREATED: 2021.06.1
MYSQL版本:5.7.25
CentOS Linux release 7.* (Core)
将此脚本和安装包上传到/opt/tmp/,执行脚本即可
COMMENT
######################定义变量######################
PORT=3306
# 安装介质目录
SOFT_DIR=/opt/tmp/
# mysql 安装地址
MYSQLDB_HOME=/opt/mysql
# mysql 数据目录
MYSQLDB_DATA_HOME=/opt/mysql/data/
# mysql 临时文件
TMP_DIR=/opt/mysql/tmp/
# mysql 运行目录
RUN_DIR=/opt/mysql/run/
# mysql 日志
LOG_DIR=/opt/mysql/log/
# 运行binlog目录
BINLOG_DIR=/opt/mysql/log/binlog/
# mysql InnoDB 日志目录
INNODB_DIR=/opt/mysql/log/innodblog/
# mysql relay 日志目录
RELAY_DIR=/opt/mysql/log/relaylog
# mysql 错误日志
ERROR_DIR=/opt/mysql/log/errorlog/
# 用户组
GROUP_NAME=mysql
# 用户
USER_NAME=mysql
# mysql 安装包
MYSQL_VERSION="mysql-5.7.23-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.25 on Redhat/CentOS Linux "
echo "========================================================================="
#添加mysql用户组
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
#添加用户
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 "$MYSQLDB_HOME目录已创建"
else
mkdir -p $MYSQLDB_HOME
fi
# 判断日志目录是否创建
if [ -d $LOG_DIR ];then
echo "$LOG_DIR目录已创建"
else
mkdir -p $LOG_DIR
fi
# 判断运行binlog目录是否创建
if [ -d $BINLOG_DIR ];then
echo "$BINLOG_DIR目录已创建"
else
mkdir -p $BINLOG_DIR
fi
# 判断错误日志目录是否创建
if [ -d $ERROR_DIR ];then
echo "$ERROR_DIR目录已创建"
else
mkdir -p $ERROR_DIR
fi
# 判断Innodb 日志目录是否创建
if [ -d $INNODB_DIR ];then
echo "$INNODB_DIR目录已创建"
else
mkdir -p $INNODB_DIR
fi
# 判断relay 日志目录是否创建
if [ -d $RELAY_DIR ];then
echo "$RELAY_DIR目录已创建"
else
mkdir -p $RELAY_DIR
fi
# 判断运行目录是否创建
if [ -d $RUN_DIR ];then
echo "$RUN_DIR目录已创建"
else
mkdir -p $RUN_DIR
fi
#downMySQL
# 判断安装介质目录是否创建
if [ -d $SOFT_DIR ];then
echo "$SOFT_DIR目录已创建"
else
mkdir -p $SOFT_DIR
fi
#删除centos系统自带的mariadb数据库防止发生冲突
rpm -qa|grep mariadb
rpm -e mariadb-libs --nodeps
# 安装libaio,如果已安装,则注释掉这一步
#yum -y install libaio
# 备份系统自带的my.cnf文件
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.25=========================="
# 创建mysql配置文件:
cat >>/etc/my.cnf<<EOF
[mysql]
no-auto-rehash
prompt = '\\u@\\h:\\p \\R:\\m:\\s [\\d]> '
[mysqld]
# DO NOT MODIFY, Universe will generate this part
port = 3306
server_id = 123456
datadir = /opt/mysql/data
log_bin = /opt/mysql/log/binlog/mysql-bin
tmpdir = /opt/mysql/tmp
relay_log = /opt/mysql/log/relaylog
innodb_log_group_home_dir = /opt/mysql/log/innodblog
log_error = /opt/mysql/log/errorlog/mysql-error.log
report_host = 127.0.0.1
# BINLOG
binlog_error_action = ABORT_SERVER
binlog_format = row
binlog_rows_query_log_events = 1
log_slave_updates = 1
master_info_repository = TABLE
max_binlog_size = 250M
relay_log_info_repository = TABLE
relay_log_recovery = 1
sync_binlog = 1
[mysqld_safe]
socket = /opt/mysql/run/mysqld.sock
pid-file = /opt/mysql/run/mysqld.pid
nice = 0
[mysqldump]
quick
quote-names
max-allowed-packet = 16M
socket = /opt/mysql/mysqld.sock
EOF
# 判断mysql软件包是否存在
if [ -f /opt/tmp/${MYSQL_VERSION}.tar.gz ]
then
cd $SOFT_DIR
tar -zxvf $SOFT_DIR/$MYSQL_VERSION.tar.gz
#rm -rf $MYSQLDB_HOME
mv $SOFT_DIR/$MYSQL_VERSION/* $MYSQLDB_HOME
rm -rf $SOFT_DIR/$MYSQL_VERSION
else
echo "没有发现mysql安装文件"
echo "下载mysql安装文件放到和本脚本在同一目录中"
wget https://downloads.mysql.com/archives/get/p/23/file/${MYSQL_VERSION}.tar.gz -P $SOFT_DIR
if(( $? == 0 ))
then
echo "MySQL DownLoad sucessfully!"
cd $SOFT_DIR
tar -zxvf $SOFT_DIR/$MYSQL_VERSION.tar.gz
rm -rf $MYSQLDB_HOME
mv -Tf $SOFT_DIR/$MYSQL_VERSION $MYSQLDB_HOME
else
echo "MySQL DownLoad failed!"
exit $ERROR_EXIT
fi
fi
# 设置mysql目录权限
if [ -d $MYSQLDB_DATA_HOME ];then
echo "目录已存在"
else
mkdir -p $MYSQLDB_DATA_HOME
chown -R mysql:mysql $MYSQLDB_DATA_HOME
echo "目录和权限创建成功!"
fi
# 设置tmp目录权限
if [ -d $TMP_DIR ];then
echo "目录已存在"
else
mkdir -p $TMP_DIR
chown -R mysql:mysql $TMP_DIR
echo "tmp目录和权限创建成功!"
fi
# 目录授权
chown -R mysql:mysql $MYSQLDB_HOME
chown -R mysql:mysql $BINLOG_DIR
# 配置开机启动
function add_auto_start
{
sed -i '46s#basedir=#basedir=/opt/mysql#' $MYSQLDB_HOME/support-files/mysql.server
sed -i '47s#datadir=#datadir=/opt/mysql/data#' $MYSQLDB_HOME/support-files/mysql.server
sed -i 's/\/usr\/local\/mysql/\/opt\/mysql/g' $MYSQLDB_HOME/support-files/mysql.server
cp $MYSQLDB_HOME/support-files/mysql.server /etc/rc.d/init.d/mysqld
cp $MYSQLDB_HOME/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
}
# 初始化数据库
$MYSQLDB_HOME/bin/mysqld --initialize --user=mysql --basedir=$MYSQLDB_HOME/ --datadir=$MYSQLDB_DATA_HOME/ >> $TMP_DIR/mysqlpass.txt
if [ $? == 0 ];then
echo "初始化数据库成功"
else
exit 1
echo "初始化数据库失败"
fi
# 设置环境变量
cat >> /etc/profile <<EOF
export PATH=\$PATH:$MYSQLDB_HOME/bin
EOF
source /etc/profile
add_auto_start
echo "启动MySQL实例..."
systemctl start mysqld
sleep 5
#########################################################################################
echo "mysql 5.7.25 安装完成,初始密码请查看$ERROR_DIR/mysql-error.log文件"
INIT_PASSWD=`cat $ERROR_DIR/mysql-error.log | grep password | awk '{print $NF}'`
echo "root初始密码为$INIT_PASSWD"
service mysql restart
sleep 5
echo "配置服务器本地免密登录..."
echo "请输入密码 $INIT_PASSWD 进行下一步"
mysql_config_editor set -S $RUN_DIR/mysqld.sock -u root -p
mysql_config_editor print --all
echo "放开root用户客户端IP限制..."
mysql --connect-expired-password <<EOF
alter user 'root'@'localhost' identified by'root';
use mysql;
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;
quit
EOF
echo "root密码已修改为root"
echo "安装完成DONE SUCCESSFULLY !"
推荐使用二进制方式进行安装,因为删除的时候,直接删除安装目录就可完成了删除
当安装完成使用 mysql 命令不生效时,执行一下:source /etc/profile
细节决定成败!
个人愚见,如有不对,恳请扶正!
MySQL | MySQL5.7.* 安装的更多相关文章
- MySQL数据库基础(MySQL5.7安装、配置)
写在前面: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQ ...
- Windows 10下mysql 64位 安装(mysql-5.7.11-winx64安装)
Windows下mysql 64位 安装(mysql-5.7.11-winx64安装) 系统Windows10 安装包mysql-5.7.11-winx64.zip 安装过程中遇到的问题,请留意4.0 ...
- 【linux】【mysql】CentOS7安装mysql5.6.26
http://www.cnblogs.com/dreamhome/p/4716425.html linux系统CentOS7到http://mirrors.sohu.com/mysql/下载想 ...
- MySQL基础(MySQL5.7安装、配置)
写在前面: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQ ...
- win10 64 位安装 MySQL(mysql-5.7.17-winx64)
版权声明:本文为搜集借鉴各类文章的原创文章,转载请注明出处:http://www.cnblogs.com/2186009311CFF/p/6517470.html. win10 64 位安装 MySQ ...
- 在window上安装mysql - MySQL5.7.24 版本
1.下载安装包 下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 点击Download,选择 No thanks, just ...
- 【MySQL数据库】MySQL5.7安装与配置、可视化工具安装和破解
软件下载 Mysql5.7地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip 安装步骤 下载后会得到zip ...
- MySQL多实例安装
1.安装MySQL需要的依赖的包和编译软件 (1)安装MySQL需要的依赖包 安装MySQL之前,最好先安装MySQL需要的依赖包,不然后面会出现报错,还得回来安装MySQL的依赖包. [root ...
- my SQL下载安装,环境配置,以及密码忘记的解决,以及navicat for mysql下载,安装,测试连接
一.下载 在百度上搜索"mysql-5.6.24-winx64下载" 二.安装 选择安装路径,我的路径“C:\Soft\mysql-5.6.24-winx64” 三.环境配置 计算 ...
随机推荐
- 【C++】禁用/启用笔记本键盘工具(含源码)
目录 前言 简单介绍注册表 (1)根键 (2)子键 (3)键值项 操作注册表的几个API函数 (1)打开一个键 (2)查询某一个键值 (3)设置一个键值 (4)新建指定键 (5)删除注册表指定键下的值 ...
- String 是一个奇怪的引用类型
开局两张图,内容全靠刷! 马甲哥看到这样的现象,一开始还是有点懵逼. 这个例子,string是纯粹的引用类型,但是在函数传值时类似于值传递: 我之前给前后示例的内存变化图吧: 根因就是大多数高级语言都 ...
- RabbitMQ(1)学习目标
一:安装,专业术语,简单队列,工作队列,发布/订阅队列,路由队列,主题队列,RPC队列,事务,确认模式,SpringAMQP 二:什么是MQ? MQ就是消息队列,是一种进程间通信或同一进程的不同线程间 ...
- 高频访问SQLite数据库
SQLite 是一款开源的 SQL 数据库引擎,由于其自包含.无服务.零配置和友好的使用许可(完全免费)等特点,在桌面和移动平台被广泛使用. 在应用开发过程中,如果想保存点数据,自然而然地就会想到 S ...
- openresty 学习笔记六:使用session库
openresty 学习笔记六:使用session库 lua-resty-session 是一个面向 OpenResty 的安全和灵活的 session 库,它实现了 Secure Cookie Pr ...
- Jmeter- 笔记6 - 负载测试
普通场景介绍 1.线程数:并发用户数 2.Ramp-Up时间:启动时间(线程数的准备时间),在这个时间点结束时,所有用户都已运行起来 3.循环次数:每个线程数都要运行的次数.永远 和 调度器一起使用, ...
- JAVA并发(5)-并发队列LinkedBlockingQueue的分析
本文介绍LinkedBlockingQueue,这个队列在线程池中常用到.(请结合源码,看本文) 1. 介绍 LinkedBlockingQueue, 不支持null,基于单向链表的可选有界阻塞队列. ...
- GEMM与AutoKernel算子优化
GEMM与AutoKernel算子优化 随着AI技术的快速发展,深度学习在各个领域得到了广泛应用.深度学习模型能否成功在终端落地应用,满足产品需求,一个关键的指标就是神经网络模型的推理性能.一大波算法 ...
- 算法训练 区间k大数查询(题解)
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包 ...
- 『动善时』JMeter基础 — 40、JMeter中ForEach控制器详解
目录 1.什么是逻辑控制器 2.ForEach控制器介绍 3.ForEach控制器的使用 (1)测试计划内包含的元件 (2)获取学院列表请求内容 (3)JSON提取器内容 (4)ForEach控制器内 ...