当前位置: 首页 > news >正文

【MySQL】# Windows下安装(压缩包、msi);Linux下安装(压缩包、命令、docker);设置连接数、binlog日志;修改时区

1.下载MySQL

  • 进入MySQL官网,点击 DOWNLOADS,选择 “MySQL Community (GPL) Downloads »”

    image-20250117160239119

  • 继续点击 “MySQL Community Server”

    image-20250117162100498

  • 点击 “Archives”

    image-20250117165805894

  • 选择合适版本、操作系统的文件进行下载

    image-20250117170040943

2.Windows-压缩包安装

2.1 下载安装包

选择压缩包类型的文件,进行下载

image-20250117170300920

2.2 安装配置

  • 将压缩包解压到想放置的位置(避免中文路径

  • 在解压目录下,新建 my.ini 文件

    image-20250117171543838

    文件内容(根据需要自定义):

    [mysqld]
    # 设置3306端口
    port=3306
    
    # 设置mysql的安装目录(就是解压的目录)
    basedir=D:\\mysql-8.4.2-winx64
    
    # 设置mysql数据库的数据存放目录,该文件夹会自行创建,不要自己手动创建
    datadir= D:\\mysql-8.4.2-winx64\Data
    
    # 允许最大连接数
    max_connections=200
    
    # 允许连接失败的次数。
    max_connect_errors=10
    
    # 服务端使用的字符集默认为utf8mb4
    character-set-server=utf8mb4
    
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    
    # 默认使用“mysql_native_password”插件认证
    authentication_policy=mysql_native_password
    
    #配置服务器的服务号,具备日后需要集群做准备
    server-id=1
    
    #开启MySQL数据库的二进制日志,用于记录用户对数据库的操作SQL语句,具备日后需要集群做准备
    log-bin=mysql-bin
    
    #设置清理超过30天的日志,以免日志堆积造过多成服务器内存爆满。2592000秒等于30天的秒数
    binlog_expire_logs_seconds=2592000
    
    #解决MySQL8.0版本GROUP BY问题
    sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
    
    # 禁用符号链接以防止各种安全风险
    symbolic-links=0
    
    # 设置东八区时区
    default-time_zone='+8:00'
    
    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8mb4
    
    
    [client]
    # 设置mysql客户端连接服务端时默认使用的端口
    port=3306
    default-character-set=utf8mb4
    
  • 以管理员身份运行cmd,初始化MySQL

    image-20250117172119134

  • 进入解压目录所在位置下的bin目录(Windows切换盘符:直接输入盘符即可,如 d:

    image-20250117174115567

  • 在bin目录下执行初始化命令,然后复制初始化后的 root密码(不包含首位空格)

    mysqld --initialize --console
    

    image-20250117174650197

  • 继续执行以下命令,安装 MySQL服务并启动

    # 安装 MySQL服务
    mysqld --install
    
    # 启动 MySQL服务
    net start mysql
    

    image-20250117175655275

  • 连接 MySQL

    mysql -uroot -p
    

    image-20250117180004257

  • 连接到MySQL后,根据个人需求,选择是否修改初始密码

    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
    

也可选择创建远程登录用户,配置权限等,详见另一篇博客

3.Windows-msi安装

3.1 下载msi文件

选择 msi类型的文件,进行下载

image-20250117180738719

3.2 安装配置

  • 下载完成后,双击软件进行安装

    image-20250117181234565

  • 同意许可文件,下一步

    image-20250117181712096

  • 选择 "custom"自定义安装

    image-20250117181808846

  • 更改安装位置,下一步点击 install进行安装

    image-20250117181952151

  • 安装完成,进行配置

    image-20250117182108512

  • 进入配置界面,下一步

    image-20250117182157096

  • 更改数据存储位置,下一步

    image-20250117182337520

  • 选择配置类型,建议服务器上选择 “Server Computer”,下一步

    image-20250117184810345

  • 设置 root密码,下一步

    image-20250117184906050

  • 继续下一步

    image-20250117185240389

  • 授予全部权限,下一步

    image-20250117185314021

  • 不构建示例数据库,直接下一步

    image-20250117185403371

  • 点击 "Execute"进行最终配置安装,等待全部打勾,即可安装完成

    image-20250117185510989

安装完成后,可连接数据库,选择创建远程登录用户,配置权限等,详见另一篇博客

4.Linux-压缩包安装

4.1 查看glibc版本

rpm -qa | grep glibc

image-20250117190806863

4.2 下载安装包

根据 glibc版本下载对应的 mysql文件

image-20250117191408478

4.3 上传到服务器并解压

将文件上传到服务器,并解压到指定位置,此处使用 /usr/local目录

# 在压缩包所在目录,进行解压,解压到 /usr/local目录
tar -xvJf mysql-8.4.2-linux-glibc2.17-x86_64.tar.xz -C /usr/local/

# 重命名文件夹
mv /usr/local/mysql-8.4.2-linux-glibc2.17-x86_64/ /usr/local/mysql-8.4.2

4.4 安装配置

  • 查看 mysql用户组及用户是否存在,若不存在,进行新增

    # 查看用户组是否存在。  存在则显示 mysql : mysql
    groups mysql
    
    # 新增用户组
    groupadd mysql
    
    # 新增用户
    useradd -r -g mysql mysql
    
  • 更改文件夹的所有者及所属组

    chown -R mysql:mysql /usr/local/mysql-8.4.2
    
    # 若不更改,可能会有奇奇怪怪的问题
    
  • 修改 /etc/my.cnf 配置文件(根据需要 自定义)

    [mysqld]
    basedir=/usr/local/mysql-8.4.2
    max_connections=200
    port=3306
    character-set-server=utf8mb4
    authentication_policy=mysql_native_password
    server-id=1
    log-bin=mysql-bin
    binlog_expire_logs_seconds=2592000
    sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
    symbolic-links=0
    default-time_zone='+8:00'
    
    # 数据存储位置(============= 此处需要自己创建 data目录,避免权限不足 ===========)
    datadir=/usr/local/mysql-8.4.2/data
    
    # 设置大小写是否敏感
    # 0-表名存储为给定的大小写 使用时区分大小写(unix,linux下默认为此值)
    # 1-表名存储为小写 使用时不区分大小写(Windows下默认)
    # 2-表名存储为给定的大小写 使用时是小写(Mac OS X下默认)
    lower_case_table_names=1
    
    # 日志相关文件位置
    socket=/tmp/mysql.sock
    log-error=/usr/local/mysql-8.4.2/data/mysql.log
    pid-file=/usr/local/mysql-8.4.2/data/mysql.pid
    
    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8mb4
    
  • 手动创建 data目录(避免权限不足)

    # 在 /usr/local/mysql-8.4.2目录下,创建 data目录
    mkdir data
    
  • 初始化MySQL

    # 在 /usr/local/mysql-8.4.2目录下执行
    ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql-8.4.2/ --datadir=/usr/local/mysql-8.4.2/data/
    
    # 执行结束后,会展示 root的临时密码,可以记住
    

    此处若报错:error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

    • 需要安装libaio

      # 查看是否安装了 libaio
      rpm -qa|grep libaio
      
      # 若上述指令无输出,则需安装 libaio
      sudo yum install -y libaio
      
      # 安装完成后,重新执行初始化命令
      
  • 配置环境变量

    # 编辑配置文件
    vim /etc/profile
    
    # =============== 在文件最后 添加以下内容 ==============
    export MYSQL_HOME="/usr/local/mysql-8.4.2"
    export PATH="$PATH:$MYSQL_HOME/bin"
    
    # 刷新配置文件,立即生效
    source /etc/profile
    
  • 启动服务

    service mysql start
    

    如果启动时报错:Redirecting to /bin/systemctl restart mysql.service Failed to restart mysql.service: Unit

    • 检查服务是否存在

      ll /etc/init.d/ | grep mysql
      
    • 若上述指令无任何返回,则需要复制相应文件

      # 复制 mysql-8.4.2文件夹下 support-files文件夹中的文件
      cp /usr/local/mysql-8.4.2/support-files/mysql.server  /etc/init.d/mysql
      
    • 再次进行启动

      service mysql start
      

    若启动时报错:ERROR! The server quit without updating PID file。 大概率是因为通过 root用户部署(没更改文件夹的所有者及所属组导致的)

    • 需要修改 mysql.server文件的内容

      vim /etc/init.d/mysql
      
    • 在 266行左右,找到 $bindir/mysqld_safe,加上 --user=root 参数

      image-20250211144515423

    • 再次进行启动

      service mysql start
      
  • 登录MySQL

    mysql -u root -p 密码
    
    # 若未记住初始化时的密码,可以通过 mysql.log文件查看(目录位置在 /etc/my.cnf文件中配置的)
    

安装完成后,可连接数据库,选择创建远程登录用户,配置权限等,详见另一篇博客

5. Linux-命令安装

此处以centos为例。

5.1 添加yum仓库

# 确保系统是最新的
sudo yum update -y

# 下载并安装 MySQL的Yum仓库
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

# 若之前通过该方式安装过 MySQL5.7,需要先移除仓库设置
# sudo yum remove mysql57-community-release

5.2 安装配置

  • 编辑配置文件 /etc/my.cnf

    [mysqld]
    datadir=/usr/local/mysql/data   # 注意:data目录需要自己创建!!!
    max_connections=200
    port=3306
    character-set-server=utf8mb4
    lower_case_table_names=1
    log-error=/usr/local/mysql/data/mysql.log
    pid-file=/usr/local/mysql/data/mysql.pid
    authentication_policy=mysql_native_password
    server-id=1
    log-bin=mysql-bin
    binlog_expire_logs_seconds=2592000
    sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
    symbolic-links=0
    default-time_zone='+8:00'
    
    socket=/var/lib/mysql/mysql.sock   # 写其他地址好像会导致MySQL无法启动
    plugin_dir=/usr/lib64/mysql/plugin  # 设置插件的目录
    
    [mysql]
    default-character-set=utf8mb4
    
  • 执行安装

    sudo yum install -y mysql-community-server
    
    # 若报错 "GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql"相关内容
    # 可以临时跳过GPG检查
    sudo yum install -y mysql-community-server --nogpgcheck
    
  • 启动服务

    # 设置开机自启
    sudo systemctl enable mysqld
    
    # 启动MySQL
    sudo systemctl start mysqld
    
  • 获取root临时密码

    grep 'temporary password' /usr/local/mysql/data/mysql.log  # 文件的位置在 my.cnf中配置
    

安装完成后,可连接数据库,选择创建远程登录用户,配置权限等,详见另一篇博客

6. Linux-docker安装

6.1 拉取镜像

docker pull mysql  # 默认拉取最新版(latest),也可指定版本

若报错,可参考另一篇博客中的4.1章节

6.2 创建本地目录

在Linux服务器上,创建用于存放 MySQL 配置文件和数据的目录

mkdir -p /etc/docker/mysql/{conf,logs,data}  # 可根据磁盘空间,自定义位置

6.3 创建配置文件

在 /etc/docker/mysql/conf目录下,创建 my.cnf文件

[mysqld]
max_connections=200
port=3306
character-set-server=utf8mb4
lower_case_table_names=1
authentication_policy=mysql_native_password
server-id=1
log-bin=mysql-bin
binlog_expire_logs_seconds=2592000
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
symbolic-links=0
default-time_zone='+8:00'

[mysql]
default-character-set=utf8mb4

6.4 启动容器

docker run -d \
  --restart=always \
  --name mysql-demo \                            # 可自定义容器名称
  -v /etc/docker/mysql/conf:/etc/mysql/conf.d \  # 将容器中的 /etc/mysql/conf.d目录映射到服务器上的 /etc/docker/mysql/conf目录
  -v /etc/docker/mysql/data:/var/lib/mysql \     # data目录 
  -v /etc/docker/mysql/logs:/var/log \           # 日志目录
  -e MYSQL_ROOT_PASSWORD=自定义root密码 \
  -p 3306:3306 \
  mysql
  
# ================ 简洁版命令 ===============
docker run -d \
  --restart=always \
  --name mysql-prod \
  -v /etc/docker/mysql/conf:/etc/mysql/conf.d \
  -v /etc/docker/mysql/data:/var/lib/mysql \
  -v /etc/docker/mysql/logs:/var/log \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -p 3306:3306 \
  mysql

相关文章:

  • HTML之JavaScript循环结构
  • 详解Redis数据结构(附源码)
  • Visonpro 检测是否有缺齿
  • 【Flink快速入门-5.流处理之多流转换算子】
  • STM32的DMA解释
  • Go语言精进之路读书笔记(第二部分-项目结构、代码风格与标识符命名)
  • 案例-05.部门管理-新增
  • 数据大屏炫酷UI组件库:B端科技风格PSD资源集
  • RISC-V平台编译 state-thread x264 ffmpeg zlog
  • 分布式光纤传感:为生活编织“感知密网”
  • Node.js 中的 Event 模块详解
  • 【JavaEE进阶】Spring Boot日志
  • java断点调试(debug)
  • 人工智障的软件开发-自动流水线CI/CD篇-docker+jenkins部署之道
  • Spring Boot应用开发
  • C++:构造函数和析构函数
  • 机器学习--实现多元线性回归
  • 【重构谷粒商城】06:Maven快速入门教程
  • 【BUUCTF】[网鼎杯 2018]Comment
  • 通俗诠释 DeepSeek-V3 模型的 “671B” ,“37B”与 “128K”,用生活比喻帮你理解模型的秘密!
  • 2025上海车展 | 当智驾不再让人兴奋,汽车智能化暗战升级
  • 巴防长称中俄可参与克什米尔恐袭事件国际调查,外交部回应
  • 安阳一村支书微信群骂村民被警方行拘,辩称对方先“污蔑造谣”
  • 央行副行长:研究建立民营中小企业增信制度,破解民营中小企业信用不足等融资制约
  • 稳就业稳经济五方面若干举措将成熟一项出台一项
  • 广州一人均500元的日料店回收食材给下一桌?市场监管部门介入调查