MySQL 安装与配置

news2024/11/26 9:35:59

MySQL 安装与配置

MySQL 安装

MySQL 一般分为社区版和商业版,我们使用的是社区版(因为免费)。MySQL 安装的教程在网上有很多,此处就不再进行进行赘述,这里推荐两篇文章:如何在 Windows11 中安装 MySQL 8.0 和 Ubuntu20.04 安装 MySQL 并配置远程访问,大家可以按照文章中的步骤安装。

启动停止和连接

一般在 MySQL 安装以后,在系统启动时,会自动启动 MySQL 服务,我们无需手动启动。我们也可以通过指令启动和停止 MySQL 服务:

  • 在 Linux 中,输入 sudo systemctl stop mysql.service/sudo systemctl start mysql.service 来停止/启动 MySQL 服务
  • 在 Windows 中输入 net stop mysql80/net start mysql80 来停止/启动 MySQL 服务(要使用管理员权限打开终端操作)

用户连接到 MySQL 服务器的方式有两种:

  1. 使用具有可视化界面的工具连接,如 MySQL 官网提供的 Workbench
  2. 使用命令连接,基本语法为 mysql [-h IP地址] [-P 端口号] -u <用户名> -p
    • -h:MySQL 服务所在的主机 IP
    • -P:MySQL 服务端口号,默认 3306
    • -u:MySQL 数据库用户名
    • -p:MySQL 数据库用户名对应的密码

[] 内为可选参数,如果需要连接远程的 MySQL,需要加上这两个参数来指定远程主机 IP、端口,如果
连接本地的 MySQL,则无需指定这两个参数。

在这里插入图片描述

基本问题

Ubuntu20.04 安装完 MySQL 以后,在没有管理员权限或超级用户权限下,是无法使用 MySQL 的,因为此时本地数据库服务器中的 root 用户的密码是空的,我们无法通过此用户进行登录,因此安装后的第一步是为 root 用户修改密码:

# 切换超级用户权限
root@ubuntu:~$ su -
# 打开数据库
root@ubuntu:~# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 8.0.39-0ubuntu0.20.04.1 (Ubuntu)

Copyright (c) 2000, 2024, 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.
# 进入到数据库操作,修改 root 密码
mysql> ALTER USER 'root'@'localhost' identified with mysql_native_password by '<密码>';
Query OK, 0 rows affected (0.00 sec)

密码修改完成以后,就可以直接以普通用户身份打开数据库,基本命令格式为 mysql -u <数据库用户名> -p,如下所示:

root@ubuntu:~$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 8.0.39-0ubuntu0.20.04.1 (Ubuntu)

Copyright (c) 2000, 2024, 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.

在 Windows 中操作基本相同,如果是按上面推荐教程逐步安装,在安装的过程中会要求我们输入 root 的密码,则不需要进行后续的修改。

远程访问

一般开发中 MySQL 数据库服务都是部署在 Docker 或 Linux 中,在 Windows 中使用数据库都是通过远程访问。现以 Windows 远程连接虚拟机 Ubuntu20.04 中的数据库为例,在 Windows 中打开 Workbench8.0(上述推荐 Windows 教程中会安装),在虚拟机中启动 mysql.server 服务。

在这里插入图片描述

如上图所示,按顺序在 Windows 中向虚拟机的数据库服务器发起连接请求,在第 4 步的时候点击测试连接,会出现如下的错误:

在这里插入图片描述

这是因为 root 用户默认的绑定地址是 localhost,无法通过网络进行连接,需要在 /etc/mysql/my.conf 文件中增加或修改 bind-adress = 0.0.0.0 用来监听所有网段的连接。

[mysqld]  # 必须位于此选项下,否则会出问题
    bind-address = 0.0.0.0

保存并退出,重启 mysql.service。

$ sudo systemctl restart mysql.service

此时再次通过 Workbench 进行连接,会出现一个新的问题:

在这里插入图片描述

这是因为数据库限制了 root 的远程登录,最好的办法是创建一个新的用户。

# 创建用户之前先通过 root 用户进入数据库
$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.39-0ubuntu0.20.04.1 (Ubuntu)

Copyright (c) 2000, 2024, 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.

# CREATE USER '<用户名>'@'%' IDENTIFIED BY '<密码>'; # % 表示可以监听所有网段
mysql> CREATE USER 'jeffery'@'%' IDENTIFIED BY '123456';

创建完成后再次通过 Workbench 对新建用户建立连接,成功建立连接。

在这里插入图片描述

新建的用户权限有限,即使是在本地操作,也仅仅只能使用几个简单的语句,如 SHOW。需要使用 GRANT 增加新建用户的权限,这样我们就可以直接通过新建用户来操作数据库,而不是通过 root 用户(在后续的基础篇会有介绍,此处了解即可)。

# 授权权限必须是 root 用户进行
$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.39-0ubuntu0.20.04.1 (Ubuntu)

Copyright (c) 2000, 2024, 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.

# GRANT <权限类别> ON <指定的库/表> TO '<用户名>'@'<主机>';
mysql> GRANT ALL ON learn_mysql TO 'jeffery'@'%';

# 权限授权完成后,需要刷新权限
mysql> FLUSH PRIVILEGES;

MySQL 配置文件

在使用 MySQL 时需要配置各种参数和选项,这个可以通过 MySQL 的配置文件来设置,在 Windows 中一般会在 MySQL server 的安装目录下添加一个 my.ini 文件进行设置,而在 Ubuntu 则在 /etc/mysql/my.cnf 文件中进行设置,设置的内容示例如下:

  • Ububtu
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

[mysql.server]
user=mysql
basedir=/var/lib

[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
  • Windows
[mysqld]
# 设置 3306 端口
port=3306
# 设置 mysql 的安装目录 ---这里输入你安装的文件路径----
basedir=C:\Program Files\MySQL
# 设置 mysql 数据库的数据的存放目录
datadir=C:\Program Files\MySQL\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数
max_connect_errors=10
# 服务端使用的字符集默认为 utf8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用 “mysql_native_password” 插件认证
# mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置 mysql 客户端默认字符集
default-character-set=utf8
[client]
# 设置 mysql 客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

配置文件一般包含以下几部分:

  • 基本设置
    • basedir: MySQL 服务器的基本安装目录
    • datadir: 存储 MySQL 数据文件的位置
    • socket: MySQL 服务器的 Unix 套接字文件路径
    • pid-file: 存储当前运行的 MySQL 服务器进程 ID 的文件路径
    • port: MySQL 服务器监听的端口号,默认是 3306
  • 服务器选项
    • bind-address: 指定 MySQL 服务器监听的 IP 地址,可以是 IP 地址或主机名
    • server-id: 在复制配置中,为每个 MySQL 服务器设置一个唯一的标识符
    • default-storage-engine: 默认的存储引擎,例如 InnoDB 或 MyISAM
    • max_connections: 服务器可以同时维持的最大连接数
    • thread_cache_size: 线程缓存的大小,用于提高新连接的启动速度
    • query_cache_size: 查询缓存的大小,用于提高相同查询的效率
    • default-character-set: 默认的字符集
    • collation-server: 服务器的默认排序规则
  • 性能调优
    • innodb_buffer_pool_size: InnoDB 存储引擎的缓冲池大小,这是 InnoDB 性能调优中最重要的参数之一
    • key_buffer_size: MyISAM 存储引擎的键缓冲区大小
    • table_open_cache: 可以同时打开的表的缓存数量
    • thread_concurrency: 允许同时运行的线程数
  • 安全设置
    • skip-networking: 禁止 MySQL 服务器监听网络连接,仅允许本地连接
    • skip-grant-tables: 以无需密码的方式启动 MySQL 服务器,通常用于恢复忘记的 root 密码,但这是一个安全风险
    • auth_native_password=1: 启用 MySQL 5.7 及以上版本的原生密码认证
  • 日志设置
    • log_error: 错误日志文件的路径
    • general_log: 记录所有客户端连接和查询的日志
    • slow_query_log: 记录执行时间超过特定阈值的慢查询
    • log_queries_not_using_indexes: 记录未使用索引的查询
  • 复制设置
    • master_hostmaster_user: 主服务器的地址和复制用户
    • master_password: 复制用户的密码
    • master_log_filemaster_log_pos: 用于复制的日志文件和位置

概述

数据库相关概念

在学习 MySQL 数据库之前,先区分三个概念:数据库、数据库管理系统、SQL。

名称全称简称
数据库存储数据库的仓库,数据是有组织的进行存储DataBase(DB)
数据库管理系统操纵和管理数据库的大型软件DataBase Management System(DBMS)
SQL操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准Structured Query Language(SQ)

用户使用 SQL 语言可以操作数据库管理系统,数据库管理系统解析 SQL 语言,对数据库进行操作,如下图所示:

在这里插入图片描述

数据模型

关系数据库是指建立在关系模型基础上,由多张相互连接的二维表组成的数据库。而所谓二维表,指的是由行和列组成的表,如下图(就类似于 Excel 表格数据,有表头、有列、有行,还可以通过一列关联另外一个表格中的某一列数据)。如 MySQL、Oracle、DB2、SQLServer 这些都是属于关系型数据库,里面都是基于二维表存储数据的。简单说,基于二维表存储数据的数据库就成为关系型数据库,不是基于二维表存储数据的数据库,就是非关系型数据库。

在这里插入图片描述

特点

  • 使用表存储数据,格式统一,便于维护
  • 使用 SQL 语言操作,标准统一,使用方便

MySQL 是关系型数据库,是基于二维表进行数据存储的,具体的结构图下:

在这里插入图片描述

  • 我们可以通过客户端连接数据库管理系统 DBMS,然后通过 DBMS 操作数据库。
  • 可以使用 SQL 语句,通过数据库管理系统操作数据库,以及操作数据库中的表结构及数据。
  • 一个数据库服务器中可以创建多个数据库,一个数据库中也可以包含多张表,而一张表中又可以包
    含多行记录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2237595.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flink安装和Flink CDC实现数据同步

一&#xff0c;Flink 和Flink CDC 1&#xff0c; Flink Apache Flink是一个框架和分布式处理引擎&#xff0c;用于对无界和有界数据流进行有状态计算。 中文文档 Apache Flink Documentation | Apache Flink 官方文档 &#xff1a;https://flink.apache.org Flink 中文社区…

车机版 Android Audio 框架笔记

车机版Android Audio 框架涉及的知识点很多&#xff0c;在工作中涉及的功能板块也及其繁杂&#xff0c;后面我会根据工作中的一些实际遇到的实例&#xff0c;逐步拆解 Android Audio的知识点&#xff0c;这里从网上整理了一些思维导图&#xff0c;可以做为未来的一个研究方向&a…

ubuntu 22.04 镜像源更换

双11抢了个云服务器&#xff0c;想要整点东西玩玩&#xff0c;没想到刚上来就不太顺利 使用sudo apt update更新软件&#xff0c;然后发生了如下报错 W: Failed to fetch http://mirrors.jdcloudcs.com/ubuntu/dists/jammy/InRelease 理所当然想到可能是镜像源连接不是很好&…

浅谈Agent

目录 什么是大模型 Agent &#xff1f; 大模型Agent 有哪些部分组成? 规划&#xff08;Planning&#xff09; Planning类型 不依赖反馈的计划 基于反馈的计划 拆解子目标和任务分解方法 COT TOT GOT LLMP 反思和完善 ReAct(融合推理与执行的能力) Reflexion(动态…

NAT网络工作原理和NAT类型

NAT基本工作流程 通常情况下&#xff0c;某个局域网中&#xff0c;只有路由器的ip是公网的&#xff0c;局域网中的设备都是内网ip&#xff0c;内网ip不具备直接与外部应用通信的能力。 处于内网的设备如何借助NAT来实现访问外网的应用&#xff1f; 对于开启了NAT功能的局域网…

Jenkins插件使用问题总结

Git Push插件 插件介绍 主要是用于git推送代码到远程仓库中使用&#xff0c;插件地址 pipeline中使用 官方说明中只有一句代码gitPush(gitScm: scm, targetBranch: env.BRANCH_NAME, targetRepo: origin) 流水线语法中也做的不齐全所以一开始我老是设置错&#xff0c;导致代…

GPT-5 终于来了 —— 人们的预期与现实

高智慧人工智能的两面性&#xff0c;利用AI和被AI利用 前言&#xff1a;人工智能的热度持续升温&#xff0c;似乎已无处不在&#xff0c;但大家对它的感知却并不显著。这种状况有点像美国 2024 年的总统大选&#xff0c;投票前人们彼此不清楚支持谁&#xff0c;直到最终计票才发…

微服务透传日志traceId

问题 在微服务架构中&#xff0c;一次业务执行完可能需要跨多个服务&#xff0c;这个时候&#xff0c;我们想看到业务完整的日志信息&#xff0c;就要从各个服务中获取&#xff0c;即便是使用了ELK把日志收集到一起&#xff0c;但如果不做处理&#xff0c;也是无法完整把一次业…

Matlab实现鲸鱼优化算法优化随机森林算法模型 (WOA-RF)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 鲸鱼优化算法&#xff08;Whale Optimization Algorithm, WOA&#xff09;是受座头鲸捕食行为启发而提出的一种新型元启发式优化算法。该算法通过模拟座头鲸围绕猎物的螺旋游动和缩小包围圈的方式&#xff0c;在…

【学习笔记】网络设备(华为交换机)基础知识 10 —— 信息中心 ① 简介

提示&#xff1a;学习华为交换机信息中心的概述&#xff08; 包括信息中心的概念、功能、以及信息的分类、分级、和输出 &#xff09; &#xff1b;还包括信息中心常用的命令 &#xff08; 使能信息中心、命名信息通道、配置信息过滤、清除统计信息、查看信息中心相关信息的命令…

【unity】unity2021 URP管线下 SceneView没有MipMaps选项了怎么办?扩展Rendering Debugger工具

一、前言 之前项目 Unity打开后 Scene窗口 有一个MipMaps选项模式&#xff0c; 可以查看哪些贴图正常距离下发红 &#xff0c;说明用不到那么大&#xff0c;可以缩一下尺寸。 但 新的项目在Unity2021上&#xff0c;用了URP&#xff0c; 就没见过这个选项。 查了一篇介绍详细的…

前端代码分析题(选择题、分析题)——JS事件循环分析、await和作用域分析

Promise其实也不难-CSDN博客 Promise 的执行顺序分析 Promise 对象的执行是异步的&#xff0c;但其执行器函数内部的代码是立即执行的&#xff0c;而 then方法注册的回调函数则是在 Promise 状态改变后执行的。 const myPromise new Promise((resolve, reject) > {conso…

DAY24|回溯算法Part03|LeetCode:93.复原IP地址、78.子集、90.子集II

目录 LeetCode:93.复原IP地址 基本思路 C代码 LeetCode:78.子集 基本思路 C代码 LeetCode:90.子集II 基本思路 C代码 通过used实现去重 通过set实现去重 不使用used和set版本 LeetCode:93.复原IP地址 力扣代码链接 文字讲解&#xff1a;LeetCode:93.复原IP地…

ts 将100个元素,每行显示9个元素,然后显示出所有行的元素,由此我们延伸出一个项目需求的简单算法实现。

1、先看一下baidu ai出的结果&#xff1a; 2、我们将上面的代码修改下&#xff0c;定义一个数组&#xff0c;然后记录每行的行号及相应的元素&#xff1a; <template><div>console</div> </template> <script setup lang"ts"> import …

17、论文阅读:VMamba:视觉状态空间模型

前言 设计计算效率高的网络架构在计算机视觉领域仍然是一个持续的需求。在本文中&#xff0c;我们将一种状态空间语言模型 Mamba 移植到 VMamba 中&#xff0c;构建出一个具有线性时间复杂度的视觉主干网络。VMamba 的核心是一组视觉状态空间 (VSS) 块&#xff0c;搭配 2D 选择…

用 Python 从零开始创建神经网络(三):添加层级(Adding Layers)

添加层级&#xff08;Adding Layers&#xff09; 引言1. Training Data2. Dense Layer Class 引言 我们构建的神经网络变得越来越受人尊敬&#xff0c;但目前我们只有一层。当神经网络具有两层或更多隐藏层时&#xff0c;它们变成了“深度”网络。目前我们只有一层&#xff0c…

推荐一款功能强大的视频修复软件:Apeaksoft Video Fixer

Apeaksoft Video Fixer是一款功能强大的视频修复软件&#xff0c;专门用于修复损坏、不可播放、卡顿、画面失真、黑屏等视频问题。只需提供一个准确且有效的样本视频作为参考&#xff0c;该软件就能将受损视频修复到与样本视频相同的质量。该软件目前支持MP4、MOV、3GP等格式的…

Web前端开发--HTML语言

文章目录 前言1.介绍2.组成3.基本框架4.常见标签4.1双标签4.1.1.标题标签4.2.2段落标签4.1.3文本格式化标签4.1.4超链接标签4.1.5视频标签4.1.6 音频标签 4.2单标签4.2.1换行标签和水平线标签4.2.2 图像标签 5.表单控件结语 前言 生活中处处都有网站&#xff0c;无论你是学习爬…

[ DOS 命令基础 2 ] DOS 命令详解-网络相关命令

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

gitlab无法创建合并请求是所有分支都不显示

点击Merge Requests ------> New merge request 创建新的合并请求时&#xff0c;在Source branch和Target branch中一个分支都不显示 排查思路&#xff1a; 1.怀疑是权限问题。 发现只有我的一个账号出现&#xff0c;检查了账号的权限&#xff0c;尝试了master、develop角色…