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命令解压

bash 复制代码
[root@localhost ~]# tar zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

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

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

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

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

bash 复制代码
[root@localhost ~]# mv mysql-5.7.28-linux-glibc2.12-x86_64 /usr/local/mysql

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

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

bash 复制代码
[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,把密码改为自己的密码。

bash 复制代码
[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数据库对应内容。

bash 复制代码
[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提供的服务文件到对应位置

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

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

bash 复制代码
[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登录的密码

bash 复制代码
[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 是以垂直方式显示,代替默认的水平方式)

bash 复制代码
mysql> use mysql;

mysql> show tables;
mysql> select * from user\G
相关推荐
小安运维日记2 分钟前
Linux云计算 |【第三阶段】PROJECT1-DAY1
linux·运维·云计算·apache
骆晨学长17 分钟前
基于springboot的智慧社区微信小程序
java·数据库·spring boot·后端·微信小程序·小程序
pyliumy20 分钟前
rsync 全网备份
linux·运维·服务器
@月落23 分钟前
alibaba获得店铺的所有商品 API接口
java·大数据·数据库·人工智能·学习
楠枬33 分钟前
MySQL数据的增删改查(一)
数据库·mysql
goTsHgo38 分钟前
从底层原理上解释 clickhouse 保证完全的幂等性
数据库·clickhouse
苹果醋341 分钟前
SpringCloud系列之一---搭建高可用的Eureka注册中心
运维·nginx
诚诚k1 小时前
docker存储
运维·docker·容器
sorel_ferris1 小时前
Ubuntu-24.04中Docker-Desktop无法启动
linux·ubuntu·docker
ggb19991 小时前
【python的坑】vpn下,python request报错 check_hostname requires server_hostname
linux·运维·服务器