MySQL 安装与配置

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.xdnf.cn/news/6167.html

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

相关文章

ISUP协议视频平台EasyCVR大华设备视频平台高并发情况下FLV协议流无法播放的原因排查

随着视频监控技术的发展和应用领域的扩大&#xff0c;大中型项目对视频监控系统的需求日益增长&#xff0c;特别是在智慧城市、公共安全、交通管理等领域。这些项目通常涉及跨区域、大规模的视频监控和管理&#xff0c;要求视频监控系统具备高兼容性、高稳定性和高扩展性。ISUP…

Linux学习笔记之vim入门

基本介绍 Linux系统会内置vi文本编辑器&#xff0c;vim具有程序编辑的能力&#xff0c;可看做是vi的增强版本&#xff0c;可以主动以字体颜色辨别语法的正确性&#xff0c;方便程序设计。代码补全、编译以及错误跳转等方便编程的功能特别丰富&#xff0c;在程序员中被广泛使用…

C# 实现读取Excel文件并设置单元格计算公式再保存

背景&#xff1a;需求需要读取数据导出成Excel文件&#xff0c;并且其中有一列需要赋值为公式&#xff0c;用于用户自己修改数据自动计算 导出Excel&#xff0c;我用到开源包MiniExcel Gitee地址MiniExcel源码介绍&#xff0c;功能说明 Nuget安装 搜索MiniExcel 导出代码如下&a…

数学建模启发式算法篇(一)---遗传算法

文章目录 1.引言2.生物学基础2.1适应度2.2染色体&#xff0c;基因 3.算法介绍3.1算法流程3.2编码和解码3.3轮盘赌选择3.4交叉和变异3.5初始参数的设置 4.实际应用-matlab4.1观察图像4.2初始参数说明4.3init初始化4.4二进制转换为十进制4.5选择,交叉过程4.6情况说明4.7代码 1.引…

qt QTreeWidget详解

1、概述 QTreeWidget 是 Qt 框架中的一个类&#xff0c;用于以树形结构展示数据。它基于 QTreeView 并提供了更高级别的接口&#xff0c;使得添加、删除和管理树形结构中的项变得更加简单。QTreeWidget 支持多级嵌套&#xff0c;每个项&#xff08;QTreeWidgetItem&#xff09…

关于离散概率模型的一些介绍

离散概率模型是概率论中的一类重要模型&#xff0c;专门用于描述随机变量取离散值的情况。这类模型在许多领域都有广泛的应用&#xff0c;比如统计学、机器学习、数据挖掘等。在这篇文章中就将介绍离散概率模型有关的东西&#xff0c;具体包括&#xff1a;马尔科夫链、部件与系…

docker镜像仓库常用命令

docker镜像仓库常用命令 docker logindocker logoutdocker pulldocker pushdocker searchdocker imagesdocker image inspectdocker tagdocker rmidocker image prunedocker savedocker loaddocker history docker login 语法: docker login [options] [server] 功能&#xff…

设备树编译报错cell 0 is not a phandle reference

问题一 编译设备树时报错&#xff1a; Warning (clocks_property): /pl0619030000:clocks: cell 0 is not a phandle reference 设备树是qemu执行dump生成的&#xff0c;然后执行反编译得到dts&#xff0c;警告处的源码为&#xff1a; 警告大概意思是时钟的参数应该是一个ph…

jmeter脚本-请求体设置变量and请求体太长的处理

目录 1、查询接口 1.1 准备组织列表的TXT文件&#xff0c;如下&#xff1a; 1.2 添加 CSV数据文件设置 &#xff0c;如下&#xff1a; 1.3 接口请求体设置变量&#xff0c;如下&#xff1a; 2、创建接口 2.1 见1.1 2.2 见1.2 2.3 准备创建接口的请求体TXT文件&#xff…

MySQL 数据库之表操作

1. 创建表 CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) [character set 字符集 collate 校验规则 engine 存储引擎];field 表示列名datatype 表示列的类型character set 字符集&#xff0c;如果没有指定字符集&#xff0c;则以所在数据库…

Python数据分析案例62——基于MAGU-LSTM的时间序列预测(记忆增强门控单元)

案例背景 时间序列lstm系列预测在学术界发论文都被做烂了&#xff0c;现在有一个新的MAGU-LSTM层的代码&#xff0c;并且效果还可以&#xff0c;非常少见我觉得还比较创新&#xff0c;然后我就分享一下它的代码演示一下&#xff0c;并且结合模态分解等方法做一次全面的深度学习…

牛客网Java高频面试题(2024最新版含答案)

作为 Java 程序员&#xff0c;选择学习什么样的技术&#xff1f;什么技术该不该学&#xff1f;去招聘网站上搜一搜、看看岗位要求就十分清楚了&#xff0c;自己具备的技术和能力&#xff0c;直接影响到你工作选择范围和能不能面试成功。 如果想进大厂&#xff0c;那就需要在 Ja…

第9章 Apache WEB服务器企业实战

万维网 (WORLD WIDE WEB,WWW)服务器,也称之为WEB服务器,主要功能是提供网上信息浏览服务。WWW是 Internet的多媒体信息查询工具,是Internet上飞快发展的服务,也是目前用的最广泛的服务。正是因为有了WWW软件,才使得近年来 Internet 迅速发展。 目前主流的WEB服务器软件包…

HTML 基础概念:什么是 HTML ? HTML 的构成 与 HTML 基本文档结构

文章目录 什么是 HTML &#xff1f;HTML 的构成 &#xff1f;什么是 HTML 元素&#xff1f;HTML 元素的组成部分HTML 元素的特点 HTML 基本文档结构如何打开新建的 HTML 文件代码查看 什么是 HTML &#xff1f; HTML&#xff08;超文本标记语言&#xff0c;HyperText Markup L…

【Kafka】Windows+KRaft部署指南

【Kafka】Windows+KRaft部署指南 摘要本地环境说明官网快速开始修改config/kraft/server.properties初始化数据存储目录启动测试创建topic创建生产者创建消费者FAQ输入行太长。命令语法不正确。问题描述解决方案参考资料摘要 Kafka是一种高吞吐量的分布式发布订阅消息系统,它…

阿里云-防火墙设置不当导致ssh无法连接

今天学网络编程的时候&#xff0c;看见有陌生ip连接&#xff0c;所以打开了防火墙禁止除本机之外的其他ip连接&#xff1a; 但是当我再次用ssh的时候&#xff0c;连不上了才发现大事不妙。 折腾了半天&#xff0c;发现阿里云上可以在线向服务器发送命令&#xff0c;所以赶紧把2…

Grafana GreptimeDB 数据源插件上线啦,全面替代 Prometheus 插件

为什么创建 GreptimeDB 数据源插件 此前&#xff0c;用户可以通过 Prometheus 数据源插件&#xff0c;设置连接到 GreptimeDB 来进行 PromQL 查询。 GrpetimeDB 支持了 80% 以上的 PromQL 语法。但是&#xff0c;由于 GreptimeDB 底层使用多值模型&#xff0c;而非 Prometheu…

LabVIEW编程过程中为什么会出现bug?

在LabVIEW编程过程中&#xff0c;Bug的产生往往源自多方面原因。以下从具体的案例角度分析一些常见的Bug成因和调试方法&#xff0c;以便更好地理解和预防这些问题。 ​ 1. 数据流错误 案例&#xff1a;在一个LabVIEW程序中&#xff0c;多个计算节点依赖相同的输入数据&#…

WPF+MVVM案例实战(十八)- 自定义字体图标按钮的封装与实现(ABD类)

文章目录 1、案例效果1、按钮分类2、ABD类按钮实现描述1.文件创建与代码实现2、样式引用与控件封装3、按钮案例演示1、页面实现与文件创建2、运行效果如下3、总结4、源代码获取1、案例效果 1、按钮分类 在WPF开发中,最常见的就是按钮的使用,这里我们总结以下大概的按钮种类,…

01简介——基于全志V3S的Linux开发板教程笔记

声明&#xff1a;本笔记内容为个人在使用自制的基于全志V3S的Linux开发板的学习笔记文章&#xff0c;仅用于记录学习与开发过程中的问题处理过程、方法操作记录、参考的网络资源等内容。 一、前言 一次偶然的机会&#xff0c;发现了全志V3S这款芯片&#xff0c;基于Cortex-A7内…