MySQL环境搭建

版本介绍

  • 版本介绍:

    • Alpha版:开发版,公司内部使用
    • Beta版:完成开发后,用户体验版
    • RC版:生产环境发布之前的一个小版本或称候选版
    • GA版:正式发布版本(咱们要用的)
  • MySQL官网地址:http://www.mysql.com/

    • 从官方网站下载安装包
    • 从官方网站下载源代码包
    • 从官方网站下载二进制包
    • 从发行版本光盘中获取安装包
  • MySQL 常见版本:

    • MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。
    • MySQL Enterprise Edition 企业版本,需注册付费,可以试用 30 天。
    • MySQL Cluster 集群版,开源免费。可将几个 MySQL Server 封装成一个 Server。
    • MySQL Cluster CGE 高级集群版,需付费
  • 官方文档:https://dev.mysql.com/doc/refman/8.0/en/introduction.html

  • MySQL数据库存在多种版本,不同的版本在不同的平台上:https://dev.mysql.com/downloads/mysql/

  • 也可以选择MySQL对应版本的,找到安装教程,如MySQL8.0为例:https://dev.mysql.com/doc/refman/8.0/en/installing.html

MySQL安装

Windows安装MySql8.0 mis格式

mis格式安装
  • 安装过程:

安装路径必须为英文路径


注意:安装mysql8.0需要先安装依赖,若无依赖会自动下载安装,本步骤可选



默认设置即可,即开发平台,端口3306,加密端口33060

认证方式,默认

第二个是为了兼容老版本升8.0的选项

设置root密码

​ 工作中:长度大于8为,数字大小写字母和特殊字符组成

​ 当前学习环境:123456

登录账户:默认只有root,可以添加

安装的服务名设置,默认即可

安装路径,默认

安装时执行的内容,点击Execute进行执行

下一步

完成

  • 注意:若这里报错则则Alt+Ctrl+Delete打开任务管理器-----服务-----MySQL80---右击打开服务---找到MySQL80右击------属性----登录----允许本地系统账户

右键win选择计算机管理,点击服务,找到MySQL的服务(选择你自己在安装过程中设置的服务名称,默认为MySQL80)

右键服务,选择属性。找到登录,选择本地系统账户。

配置环境变量

右键win,选择"系统",点击进入右边"相关系统设置"

  • 安装后的配置:环境变量(非必要): 若配置的mysql的环境变量则可以在CMD中运行MySql

新建一个词条:输入mysql安装路径。如果保持默认安装路径的话一般是在C盘下Program Files里面可找到MySQL Server 8.0,进入之后找到bin文件下后再复制路径。

打开win + r ,输入cmd打开命令行,输入以下代码回车然后输入自己设定的密码

mysql 复制代码
mysql -u root -p 

命令提示符测试


强大的命令行--powershell测试

Windows使用压缩包方式安装

  1. 先卸载之前安装的MySQL文件

    • 并且删除MySQL软件的两个文件夹

      • "C:\Program Files"下的文件夹MySQL文件夹。
      • 隐藏文件夹"C:\ProgramData"下的MySQL文件夹。
      • 若重新安装有报错,可以按照下面的方式检查是否有未删除的内容
  2. 官网下载ZIP格式文件

    1. 地址:https://dev.mysql.com/downloads/mysql/ ,选择标准包

  3. 解压缩在英文路径下

  4. 配置环境变量.如果之前存在mysql的环境变量要进行删除,或者直接修改路径。选择你安装的路径。

  5. 创建配置文件,位置mysql-8.0.37-winx64解压缩文件下,新建名称为my.ini对文件进行编辑,内容如下

    bash 复制代码
    [client]
    # 设置mysql客户端连接服务端时默认使用的端口
    port=3306
    default-character-set=utf8mb4
    
    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8mb4
    
    [mysqld]  # 服务端设置
    # 设置3306端口
    port=3306
    # 重要,设置mysql的安装目录。基础工作目录
    basedir=D:\mysql-8.0.37-winx64
    # 重要,设置mysql数据库的数据的存放目录
    datadir=D:\mysql-8.0.37-winx64\data
    # 允许最大连接数
    max_connections=200
    # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
    max_connect_errors=10
    # 服务端使用的字符集默认为UTF8
    character-set-server=utf8mb4
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
  6. 初始化MySQL服务

    bash 复制代码
    推荐在命令提示符中完成,若有错则会提示,在powershell中初始化时有错无提示
    数据库初始化
    	mysqld --initialize --console
    	此时注意不能关闭此命令框,注意观察代码内容。里面标注有系统初始化的账号密码。如果直接关闭了。则需要删除MySQL文件夹里面data目录。因为里面有第一次初始化存储的账号密码
    
    注意:临时登录的密码,若未保存密码就关闭了窗口则需在重新初始化之前删除data目录
      安装mysql服务
      	mysqld --install
      	
      启动mysql服务
      	net start mysql
      要使用初始化MySQL服务的随机密码登录,然后修改密码	
      修改mysql密码
      	alter user locahost@本地/远程(IP地址) identified by '密码':
    
    • 注意初始化时可能会出现的问题

      • 环境变量问题:需要查看Windows的环境变量

      • 缺少依赖文件问题:下载VC开发运行库依赖进行安装,如:VisualC_Redistributable

  7. 如果删除MySQL

    1. 关闭服务
    2. 删除MySQL整体文件夹
    3. 删除配置的环境变量

yum仓库安装

  • 添加yum源

  • 选择MySQL Community Downloads

  • 选择版本下载

  • 添加yum源

    BASH 复制代码
    [root@server ~]# wget https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm
    
    [root@server ~]# rpm -ivh  mysql84-community-release-el9-1.noarch.rpm 
    
    [root@server ~]# yum  list  |  grep  mysql
  • 安装mysql-community-server

    bash 复制代码
    [root@server ~]# yum  install  mysql-community-server.x86_64  -y
    
    [root@server ~]# systemctl start mysqld   # 启动,注意有d
    
    [root@server ~]# systemctl status mysqld
    
    [root@server ~]# grep 'temporary password' /var/log/mysqld.log
    2023-07-09T02:38:36.368700Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: qQ6OmpD?8_.f   # 查看初始登录密码
    
    [root@server ~]# mysql -u root -p         # 以root身份登录
    Enter password:   # 赋值初始登录密码
    
    mysql> alter user 'root'@'localhost' identified by 'Admin123!'; # 设置新密码
    
    mysql> show variables like 'validate_password.%';  # 查看密码设置默认的规则
    +--------------------------------------+--------+
    | Variable_name                        | Value  |
    +--------------------------------------+--------+
    | validate_password.check_user_name    | ON     | # ON时,账户及密码不能相同 
    | validate_password.dictionary_file    |        | # 规则文件保存路径
    | validate_password.length             | 8      | # 密码长度
    | validate_password.mixed_case_count   | 1      | # 至少要包含大/小写字母的个数
    | validate_password.number_count       | 1      | # 至少要包含数字的个数
    | validate_password.policy             | MEDIUM | # 密码的验证强度等级
    | validate_password.special_char_count | 1      | # 密码中特殊字符个数
    +--------------------------------------+--------+
    7 rows in set (0.01 sec)
    # 默认为中级密码验证规则,密码长度8为,内容至少包含:一个大写字母、一个小写字母、一位数字和一个特殊字符
    
    # 若密码不好记忆可以调低密码验证等级,在设置简单的密码,但生产中不推荐
    mysql> set global validate_password.policy=low;
    
    mysql> set global validate_password.length=6;
    
    mysql> alter user 'root'@'localhost'  identified  by  '密码';
    
    mysql> exit
    Bye
    
    [root@server ~]#  mysql -u root -p
    Enter password:       # 密码
    mysql> show databases;    # 注意s和分号结尾
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    
    mysql> show global variables like 'port';      # 查看默认端口号
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | port          | 3306  |
    +---------------+------+
    1 row in set (0.00 sec)
    
    mysql> quit
    Bye
注意

使用centos9-stream源安装mysql默认没有初始密码,也缺少某些功能,不推荐。

bash 复制代码
# 恢复快照
[root@server ~]# yum install mysql-server

[root@server ~]# systemctl start mysqld   # 启动,注意有d

[root@node1 ~]# grep 'temporary password' /var/log/mysqld.log #文件更换位置了
grep: /var/log/mysqld.log: 没有那个文件或目录

[root@node1 ~]# grep 'temporary password' /var/log/mysql/mysqld.log

[root@server ~]# mysql -u root -p
Enter password:    # 直接回车

mysql> show variables like 'validate_password.%'; 
Empty set (0.02 sec)    # 注意:显示为空,表示未安装插件

mysql> INSTALL COMPONENT 'file://component_validate_password';
Query OK, 0 rows affected (0.01 sec)

mysql> exit
Bye

本地RPM包安装

下载集合包
通过xftp将集合包上传到/目录
安装
bash 复制代码
[root@server ~]# cd /
[root@server /]# tar -xvf mysql-8.0.32-1.el9.x86_64.rpm-bundle.tar   # 解压

[root@server /]# yum localinstall mysql-community-server-8.0.32-1.el9.x86_64.rpm \
mysql-community-client-8.0.32-1.el9.x86_64.rpm \   # 必须,客户端
mysql-community-common-8.0.32-1.el9.x86_64.rpm \   # 必须,公共库
mysql-community-icu-data-files-8.0.32-1.el9.x86_64.rpm  \  # 必须,支持正则表达式的icu数据文件
mysql-community-client-plugins-8.0.32-1.el9.x86_64.rpm \   # 必须,客户端共享插件
mysql-community-libs-8.0.32-1.el9.x86_64.rpm       # 不必须,开发库,开发跟MySql有关的C/C++ 项目时则需要

[root@server /]# cd ~

[root@server ~]# systemctl start mysqld

[root@server ~]# systemctl status mysqld  # 查看状态

[root@server ~]# mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)  # 密码错误,需要重置密码

[root@server ~]# grep password /var/log/mysqld.log   # 查询初始密码
2023-02-09T03:55:47.305118Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: q&2PO.yJZ+Hp
# q&2PO.yJZ+Hp为密码,需要复制

[root@server ~]# mysql -u root -p
Enter password:   # 粘贴之前的密码

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.   # 提示需要修改默认密码

mysql> alter user 'root'@'localhost' identified by 'MyNewPass1!'; # 修改密码
Query OK, 0 rows affected (0.01 sec)

mysql> exit
Bye

容器安装

bash 复制代码
[root@server ~]# yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine \
                  podman \
                  runc  -y   # 先移除已安装的docker、podman等软件,未安装可不执行

# yum-utils由CentOS官方开发的Linux包管理工具,它是yum软件包管理器的扩展,提供了一系列额外的命令和脚本,可以帮助Linux系统管理员更好地管理依赖关系、配置文件、软件包更新等方面的工作
[root@server ~]# yum install  yum-utils  -y  # 安装并升级

# yum-config-manager包含在untils工具包中,用于对repo文件进行处理
[root@server ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 添加源

# 安装docker核心软件及客户端软件
[root@server ~]# yum install docker-ce docker-ce-cli -y # 安装

[root@server ~]# systemctl start docker

[root@server ~]# systemctl status docker

[root@server ~]# docker version

[root@server ~]# docker run hello-world  # 测试

# 注意:由于使用默认镜像仓库下载速度较慢,可以设置阿里的镜像加速器提高下载速度,在阿里开源登录->控制台-镜像容器服务-镜像工具->镜像加速器->在linux命令行中设置如下:
[root@node1 ~]# vim  /etc/docker/daemon.json
# 粘贴如下:
{
  "registry-mirrors": ["https://1heqe202.mirror.aliyuncs.com"]
}
[root@node1 ~]# systemctl daemon-reload
[root@node1 ~]# systemctl restart docker
[root@node1 ~]# docker info   # 查看信息最后有:
Registry Mirrors:
  https://1heqe202.mirror.aliyuncs.com/
# 上述镜像加速可以选择不做

[root@server ~]# docker run --name mysqltest1 -e MYSQL_ROOT_PASSWORD=123456 -d mysql  # 创建mysqltest1实例,设置登录密码,启动mysql,若没有拉取镜像会自动拉取

[root@server ~]# docker ps  # 查看是否运行,若没有运行实例可以重新建立数据库mysqltest2

[root@server ~]# yum install bash-com*  # 安装bash扩展包,实现命令补齐,若已安装可跳过

[root@server ~]# docker exec -it mysqltest1 /bin/bash  # 进入容器终端并且的保留为容器终端的输入形式.

bash-4.4# mysql -uroot -p   # 登录
Enter password:  # 输入123456密码
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.30 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> exit
Bye
bash-4.4# exit
exit
注意

不推荐将数据库部署在容器中,原因如下:

  • 安全问题:当容器崩溃,数据库为正常关闭可能损坏数据;
  • 性能问题:mysql是关系型数据库,对I/O要就较高,若数据库部署在容器中,I/O会出现瓶颈;
  • 网络问题、状态问题、资源隔离问题、等等;
  • 建议:可以把数据丢失不敏感的业务(搜索等)进行容器化,也可以跑轻量级或分布式数据库。

生产环境中使用通用二进制包安装

作用
  • 二进制包:源码包经过成功编译之后产生的包;
  • 优点:由于二进制包在发布之前就已经完成了编译的工作,因此用户安装软件的速度较快;
  • 注意:在生产环境中通用二进制包安装方法较为常用。
软件包下载

网址:https://dev.mysql.com/downloads/mysql/

使用xftp将软件包上传到根目录
解压缩
bash 复制代码
[root@server ~]# cd  /

[root@server /]# tar xvf mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar

# 解压缩后有三个子包
# mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz:安装mysql必须的文件
# mysql-router-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz:官方提供的一个轻量级中间件,主要作用是在应用程序与MySQL服务器之间提供透明的路由方式,是高可用性 (HA) 解决方案的构建块
# mysql-test-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz:测试框架,用于做mysql 服务的单元,回归和一致性测试,并提供了运行单元测试和创建新单元测试的工具

# 继续解压缩
[root@server /]# tar xvf mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz
[root@server /]# ls
使用前的准备
bash 复制代码
[root@server /]# mv mysql-8.0.33-linux-glibc2.17-x86_64-minimal /usr/local/mysql  # 移动到默认安装目录,也可自行修改

[root@server /]# cd /usr/local/mysql   

[root@server mysql]# groupadd mysql    # 创建名为mysql的用户组

[root@server mysql]# useradd -r -g mysql -s /bin/false mysql  # 创建名为 mysql的系统用户,将其添加到mysql用户组中,并设置其登录shell为/bin/false,以限制该用户的登录权限

[root@server mysql]# mkdir mysql-files   # 创建一个名为 mysql-files 的目录,用于存放MySQL数据文件,一般存储备份数据

[root@server mysql]# chown mysql:mysql mysql-files     # 将mysql-files目录的所有者和所属组设置为mysql用户和组

[root@server mysql]# chmod 750 mysql-files    # 设置mysql-files目录的权限为 750,以确保只有 "mysql" 用户组的成员可以读取、写入和执行该目录
初始化软件
bash 复制代码
[root@server mysql]# bin/mysqld --initialize --user=mysql  # 注意:需要复制密码

[root@server mysql]# bin/mysql_ssl_rsa_setup  # 支持ssl,用于安全通信

[root@server mysql]# bin/mysqld_safe --user=mysql &  # 使用后台方式以mysql用户身份启动 MySQL 服务器,mysqld_safe 是一个用于启动和监控 MySQL 服务器的脚本

# 注意:此时上述命令执行完毕处于后台运行状态,需要另行启动一个终端

[root@server ~]# ps  -ef | grep  mysql   # 查看进程运行状态

[root@server ~]# cd /usr/local/mysql

[root@server ~]# bin/mysql -u root -p   # 登录,可能报错

# 报错,需要找到下面的文件进行软连接
[root@server ~]# ln -s /usr/lib64/libncurses.so.6.2 /usr/lib64/libncurses.so.5

[root@server ~]# ln -s /usr/lib64/libtinfo.so.6.2  /usr/lib64/libtinfo.so.5

[root@server ~]# bin/mysql -u root -p
Enter password:   # 粘贴之前的初始密码

mysql> alter  user 'root'@'localhost'  identified  with  mysql_native_password by '123456';  修改密码

mysql> flush privileges;   # 刷新

mysql>exit

[root@server ~]# ps -ef | grep mysql

[root@server ~]# kill  -9  pid号   # 在当前终端关闭运行的mysql
设置mysql的配置文件
bash 复制代码
# 回到之前的终端,敲一个回车,显示进程以杀死
[root@server mysql]# vim /etc/my.cnf  # 新建配置文件,输入以下内容:
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
server-id = 1
port = 3306
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
tmpdir = /tmp
socket = /tmp/mysql.sock
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
default-storage-engine=INNODB
log_error = error.log

# 注意:以下是上述配置文件的解释
[client]      # 客户端设置
port = 3306   # 默认端口号
socket = /tmp/mysql.sock   # 启动套接字 

[mysqld]
###############################基础设置#####################################
server-id = 1      # Mysql服务的唯一编号 每个mysql服务Id需唯一
port = 3306        # 端口号 3306
basedir = /usr/local/mysql     # mysql安装根目录
datadir = /usr/local/mysql/data    # mysql数据文件所在位置 没有改目录则创建
tmpdir = /tmp    # 临时目录 比如load data infile会用到
socket = /tmp/mysql.sock   # 设置socke文件所在目录
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
default-storage-engine=INNODB
###############################日志设置#####################################
#数据库错误日志文件
log_error = error.log
配置启动脚本
bash 复制代码
[root@server ~]# cd  /usr/local/mysql/support-files

[root@server support-files]# cp -a mysql.server /etc/init.d/mysql.server # 拷贝启动脚本,可能报错

[root@server support-files]# yum  install  chkconfig  # 安装修通服务配置的包

[root@server support-files]# cp -a mysql.server /etc/init.d/mysql.server

[root@server support-files]# cd  /etc/init.d  

[root@server init.d]# vim  mysql.server  # 增加=之后的内容

basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

[root@server init.d]# cd  ~ 

[root@server ~]# systemctl daemon-reload   # 重载系统配置

[root@server ~]# systemctl start mysql

[root@server ~]# vim  ~/.bash_profile   # 设置环境变量需添加如下语句
export PATH=$PATH:/usr/local/mysql/bin

[root@server ~]# source ~/.bash_profile
  
[root@server ~]# mysql  -uroot -p

安装navicat

简介

预处理

  • 默认mysql的用户不允许远程连接,则需要更改为允许连接,但在生产环境中一般不推荐开启允许远程连接,若只有本机连接,可以不做
mysql 复制代码
mysql> use mysql;

mysql> select host,user from user;

mysql> update user set host='%' where user = 'root';

mysql> flush  privileges;

mysql> select host,user from user;

新建navicat连接

  • 连接->mysql
  • 如图:
  • 注意:密码为登录mysql的密码

注意事项

相关推荐
云和数据.ChenGuang5 小时前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys5 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
Hacker_LaoYi5 小时前
SQL注入的那些面试题总结
数据库·sql
建投数据6 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
Hacker_LaoYi7 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀7 小时前
Redis梳理
数据库·redis·缓存
独行soc7 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
你的微笑,乱了夏天8 小时前
linux centos 7 安装 mongodb7
数据库·mongodb
工业甲酰苯胺8 小时前
分布式系统架构:服务容错
数据库·架构
独行soc9 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘