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

MySQL数据库基本安装与部署

目录

概念

数据库的基本概念

关系型数据库

非关系型数据库

MySQL

商业版与社区版

示例

初始化MySQL

添加系统服务


概念

数据库的基本概念

  • 数据(Data)
    • 描述事物的符号记录
    • 包括数字、文字、图形、图像、声音、档案记录等
    • 以“记录”形式按统一的格式进行存储
    • 将不同的记录组织在一起
    • 用来存储具体数据
  • 数据库
    • 表的集合,是存储数据的仓库
    • 以一定的组织方式存储相互有关的数据集合
  • 数据库管理系统(DBMS)
    • 是实现对数据库资源有效组织、管理和存取的系统软件
  • 数据库系统
    • 是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库用户组成
    • 用户可以通过DBMS或应用程序操作数据库

关系型数据库

  • 关系数据库系统是基于关系模型的数据库系统
  • 关系模型的数据结构使用简单易懂的二维数据库
  • 关系模型可用简单的 “实体-关系” (E-R)图来表示
  • E-R图中包含了实体(数据对象)、关系和属性三个要素
  • 实体
    • 也称为实例,对应现实世界中可区别于其他对象的“时间”或“事物”
    • 如银行客户、银行账户等
  • 属性
    • 实体所具有的某一特性,一个实体可以有多个属性
      • 如“银行账户”实体集中的每个实体均具有姓名、住址、电话等属性
  • 联系
    • 实体集之间的对应关系成为联系,也称为关系
      • 如银行客户和银行账户之间存在“储蓄”的关系
  • 所有实体及实体之间联系的集合构成一个关系数据库
  • 关系数据库的存储结构是二维表格
    • 每一行称为一条记录,用来描述一个对象的信息
    • 每一列称为一个字段,用来描述对象的一个属性

非关系型数据库

  • 非关系型数据库也被称作NoSQL(Not Only SQL)
  • 存储数据不以关系模型为依据,不需要固定的表格式
  • 优点
    • 数据库可高并发读写
    • 对海量数据高效率存储与访问
    • 数据库具有高扩展性与高可用性
    • 常用的有:Redis、MongoDB

MySQL

SQL:结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

  • 一款开源的关系型数据库
  • Oracle旗下产品
  • 遵守GPL协议,可以免费使用与修改
  • 特点
    • 性能卓越、服务稳定
    • 开源、无版权限制、成本低
    • 多线程、多用户
    • 基于C/S(客户端/服务器)架构
    • 安全可靠

商业版与社区版

  • MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用
  • MySQL社区版是由分散在世界各地的MySQL开发者、爱好者一起开发与维护,可以免费使用
  • 两者区别
    • 商业版组织管理与测试环节更加严格,会比社区版更稳定
    • 商业版不遵守GPL,社区版遵从GPL可以免费使用
    • 商业版可获得7*24小时的服务,社区版则没有

示例

初始化MySQL

导入已经编译过的MySQL安装包,使用tar命令解压

[root@localhost ~]# tar zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

安装所需依赖yum -y install gcc libaio

创建程序用户,关闭防火墙和内核安全机制

[root@localhost ~]# useradd -M -s /sbin/nologin mysql
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

因为是解压即用的软件包,所以可以直接移动到方便使用的位置,并重命名为mysql

[root@localhost ~]# mv mysql-5.7.28-linux-glibc2.12-x86_64 /usr/local/mysql

cd进入移动的目录内,创建数据目录,用于存放MySQL生成的数据,创建程序用户并修改该目录的属主和属组为mysql程序用户

最后创建软链接便于在终端中使用mysql命令

[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]# mkdir data
[root@localhost mysql]# useradd -M -s /sbin/nologin mysql
[root@localhost mysql]# chown -R mysql:mysql data/
[root@localhost mysql]# ln -s /usr/local/mysql/bin/* /usr/local/bin/

cd进入bin/目录下,使用mysqld脚本初始化

在初始化完成后的最后一行,最后一行会显示出临时密码,利用临时密码登录MySQL,把密码改为自己的密码。

[root@localhost bin]# ./mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --initialize
2024-07-22T02:29:46.322987Z 1 [Note] A temporary password is generated for root@localhost: B;jb1+:.aah6    # 临时密码

cd到mysql安装目录下的data目录,初始化完成后,刚刚新建的data目录内也生成了文件和数据库

打开MySQL的配置文件,删除在安装系统时MariaDB数据库生成的全部内容,添加MySQL数据库对应内容。

[root@localhost data]# vim /etc/my.cnf
[client]
socket=/usr/local/mysql/data/mysql.sock[mysqld]
socket=/usr/local/mysql/data/mysql.sock
bind-address=0.0.0.0
port=3306
skip-name-resolve
max_connections=2048
character-set-server=utf8
default-storage-engine=INNODB
lower_case_table_names=1[mysqld_safe]
log-error=/usr/local/mysql/data/error.log
  • [mysqld_safe]:mysql启动时要执行的操作

优化参数不加也可以正常使用mysql

优化参数

说明

[mysqld_safe]

mysql启动时要执行的操作

socket

告诉本地客户端用哪个socket连接服务端

bind-address

绑定监听地址,0.0.0.0表示所有地址

port

指定端口号

skip-name-resole

跳过与客户端的域名解析,增加连接效率

max_connections

允许最大连接数

character-set-server

指定服务端使用的字符集

default-storage-engine

创建新表时默认使用的存储引擎

lower_case_table_names

表名不区分大小写

添加系统服务

拷贝mysql提供的服务文件到对应位置

[root@localhost init.d]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

创建systemd守护进程能够管理mysql的服务文件,最后重载systemd

[root@localhost init.d]# vim /lib/systemd/system/mysqld.service
[Unit]
Description=mysqld 
After=network.target 
[Service] 
Type=forking 
ExecStart=/etc/init.d/mysqld start      
ExecReload=/etc/init.d/mysqld restart      
ExecStop=/etc/init.d/mysqld stop      
PrivateTmp=true # 把临时数据放到私有的临时目录里
[Install] 
WantedBy=multi-user.target
[root@localhost ~]# systemctl daemon-reload

然后利用临时密码修改mysql登录的密码

[root@localhost ~]# mysql -uroot -p
password:这里输入之前生成的临时密码,回车
进入mysql界面
mysql> set password='123456';    # 修改密码
mysql> show databases;    # 显示当前所有数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

进入名为mysql的数据库,列出所有表

再使用select命令测试查询mysql数据库中user表的所有内容,包括所有列的详细信息(\G 是以垂直方式显示,代替默认的水平方式)

mysql> use mysql;mysql> show tables;
mysql> select * from user\G

http://www.lryc.cn/news/406104.html

相关文章:

  • paraFoam 运行 报错 usr/lib/x86_64-linux-gnu/libQt5Core.so 已解决
  • 科技前沿:Llama 3.1的突破与革新
  • 每天一个数据分析题(四百四十七)- 业务系统
  • 如何保护你的网络安全?
  • Nginx 怎样处理请求的重试机制?
  • 自己开发软件实现网站抓取m3u8链接
  • [Python3] 多模式字符串搜索 `Aho-Corasick`
  • 4 Types of Kaggle Competitions
  • 【STM32】stm32中GPIO_ReadInputDataBit()是什么意思
  • Study--Oracle-07-ASM相关参数(三)
  • 【STM32嵌入式系统设计与开发拓展】——12_Timer(定时器中断实验)
  • iPhone 17系列取消17 Plus版本?新一代苹果手机迎来新变革
  • Bootstrap实现dialog上一步下一步多个弹窗交互
  • iOS实际开发中使用数据驱动页面布局
  • 后端开发刷题 | 笔试
  • ROS2入门到精通—— 2-8 ROS2实战:机器人安全通过狭窄区域的方案
  • STM32自己从零开始实操10:PCB全过程
  • 折线图时间统计
  • Prompt工程:与AI聊天机器人更好地交流
  • BGP之选路MED
  • KunDB4.0:安全能力与Oracle兼容性提升,支持跨系统多租户部署
  • JVM的 6 种垃圾回收算法
  • 【SOC 芯片设计 DFT 学习专栏 -- DFT OCC 与 ATPG的介绍】
  • 自动驾驶-机器人-slam-定位面经和面试知识系列03之C++STL面试题(01)
  • 红狮金业解读:分析高价位黄金的后续投资吸引力
  • LDR6020双盲插便携显示器应用
  • 【HashMap源码学习】
  • Git关联本地仓库和远程仓库
  • 【Django】在vscode中新建Django应用并新增路由
  • DT浏览器首页征集收录海内外网址