MySQL
- MySQL 是
关系型数据库管理系统 RDBMS
, 使用SQL
作为查询语言. - 用于需要复杂数据结构和关系的应用程序
- 例 : web应用程序 , 企业级应用程序和大型数据库系统
数据的类型 :
- 关系型数据库 (RDBMS)
- 采用表格结构存储数据 , 使用SQL语言进行操作和管理
- 非关系型数据库 (NoSQL)
- 使用键值对 , 文档等数据结构存储数据
- 图形数据库 (Graph Database)
- 用于存储图形数据 , 如社交网络 , 知识图谱等数据
- 内存数据库 (In-Memory Database)
- 将数据缓存在内存中 , 具有告诉读写 , 低延迟的优点
- 分布性数据库 (Distributed Database)
- 将数据分布存储在不同的节点上 , 实现水平扩展
搭建基础MySQL 8.0
- 安装
mysql
和mysql-server
yum -y install mysql mysql-server
- 启动
mysqld
服务
systemctl mysqld
- 关闭
Selinux
和firewalld
setenforce 0
systemctl stop firewalld
- 启动
mysql
测试
mysql
MySQL参数
/etc/my.cnf.d/mysql-server.cnf
//主配置文件/var/lib/mysql
//数据库目录mysqld
//进程名3306
//端口号TCP
//传输协议mysql:mysql
//进程, 文件权限所属组 , 所有者/var/log/mysql/mysqld.log
//错误日志文件
MySQL连接服务
mysql -hlocalhost -P3306 -u用户 -p密码
- 无参数默认本机 , 3306 , root , 123456
基础操作
select version();
//查看服务软件版本select user();
//查看登陆用户show databases;
//查看已有库user 库名;
//切换库select database();
//查看当前所有库show tables;
//查看库里已有表insert into 库名(表名) values("内容")
//向库.表里添加内容desc 库.表
//查看表头exit
quit
//断开连接
MySQL的基础库
- 默认存在四个基础库 , 不可删除 , 存储的是服务运行时加载的不同功能的程序和数据 .
information_schema
- MySQL数据库提供的一个虚拟的数据库 , 存储了MySQL数据库中的相关信息 , 比如数据库 , 表 , 列 , 索引 , 权限 , 角色等信息.
- 它并不存储实际的数据 , 而是提供了一些试图和存储过程 , 用于查询和管理数据库的源信息.
mysql
- 存储了MySQL服务器的系统配置 ,用户 , 帐号和权限信息等.
- 是MySQL数据库最基本的库 , 存储了MySQL服务器的核心信息
performance_schema
- 存储了MySQL数据库的性能指标 , 事件和统计信息等数据 , 可以用于性能分析和优化.
sys
- MySQL 8.0版本新引入的库,基于
information_schema
和performance_schema
试图 , 提供更方便 , 更直观的方式来查询和管理MySQL数据库的源数据和性能数据.
- MySQL 8.0版本新引入的库,基于
MySQL密码管理
数据库操作系统管理员用户才有权限进行密码管理
设置用户 –> 密码登陆
mysqladmin -hlocalhost -uroot -p password "新密码"
-h
: 登陆数据库的IP地址-u
: 用户-p
: 密码
修改密码
mysqladmin -hlocalhost -uroot -p旧密码 password "新密码"
不知道旧密码时需要破解密码(有root权限)
- 配置服务可以无密码登陆
修改MySQL配置文件
/etc/my.cnf.d/mysql-server.cnf
- 添加无密码登陆权限
- skip-grant-tables //手动添加此行 作用登陆时不验证密码
重启MySQL服务
systemctl restart mysqld
- 删除不知道的原密码
- 无密码链接MySQL服务
mysql
- 查看原用户 , 密码等参数
desc mysql.user;
查看表头名select host , user , authentication_string from mysql.user;
查看表头的值
- 设置删除用户
root
的密码 , 设置为空update mysql.user set authentication_string="" where user="root";
- 刷新权限 , 确保以上操作生效
flush privileges;
- 无密码链接MySQL服务
- 配置服务需要的密码登陆
- 修改配置文件 , 删除无密码登陆权限
vim /etc/my.cnf.d/mysql-server.cnf
- 重启MySQL服务
systemctl restart mysqld
- 修改配置文件 , 删除无密码登陆权限
- 登陆后设置新密码
mysql -hlocalhost -P3306 -uroot -p新密码
-P
: 大写的P
指定链接MySQL的端口 , 默认为3306