MySQL数据库入门

1、MySQL概述

MySQL官方网站

https://www.mysql.com/downloads/

MySQL被Oracle公司收购了,作者又重新编写了一个开源的数据库管理系统,Mariadb

2、MySQL产品&版本

2、数据库在网站架构中的角色

LAMP

LNMP网站架构

3、安装MySQL-基于yum

查看MySQL信息

查询mysql相关的软件包信息

查询mysql-server的软件信息

2、安装mysql-server

root@candy-nginx202 \~# yum install mysql-server -y

3、查询mysql-server是否安装成功

root@candy-nginx202 \~# rpm -q mysql-server

root@candy-nginx202 \~# rpm --help |grep '-q'

检查防火墙是否关闭

sestatus

systemctl status firewalld

iptables -vnL

4、启动MySQL,查看进程数量

root@candy-nginx202 \~# systemctl start mysqld

root@candy-nginx202 \~# ps axu | grep mysqld

root@candy-nginx202 \~# ps -efL | grep mysqld

root@candy-nginx202 \~# ps -efL | grep -c mysqld

5、登录数据库系统

输入mysql指令即可登录MySQL数据库

6、查询mysql库的user表的user、host、authentication_string字段的数据库信息

root@candy-nginx202 \~# mysql

mysql> select user,host,authentication_string from mysql.user;

4、MySQL数据库常用指令

MySQL数据库常用命令涵盖了一系列操作,包括但不限于数据库的创建与管理、数据表的操作、数据的增删改查、用户权限管理以及服务器的维护等。以下是一些基础且常用的MySQL命令示例:

mysql -u 用户名 -p

输入命令后,系统会提示输入密码。、

在MySQL命令行界面输入:

quit 或 exit

2、显示所有数据库

SHOW DATABASES;

3、创建数据库

CREATE DATABASE 数据库名;

4、删除数据库

DROP DATABASE 数据库名;

5、使用指定数据库

USE 数据库名;

6、显示当前数据库中的所有表

SHOW TABLES;

7、创建表

CREATE TABLE 表名 (

列1 数据类型,

列2 数据类型,

...

列n 数据类型,

PRIMARY KEY (主键列名)

);

8、删除表

DROP TABLE 表名;

9、插入数据

INSERT INTO 表名 (列1, 列2, ..., 列n)

VALUES (值1, 值2, ..., 值n);

10、查询数据

SELECT 列1, 列2, ..., 列n

FROM 表名

WHERE 条件;

筛选大于等于20岁的学生

11、更新数据

UPDATE 表名

SET 列1 = 新值1, 列2 = 新值2, ..., 列n = 新值n

WHERE 条件;

将年龄22岁的学生修改名字和邮箱

12、删除数据

DELETE FROM 表名

WHERE 条件;

删除年龄为22岁的所有学生记录

13、创建索引

CREATE INDEX 索引名

ON 表名 (列名);

可以创建多个复合索引

您还可以为多个列创建复合索引,以便基于这些列的组合来加速查询

14、删除索引

DROP INDEX 索引名

ON 表名;

15、显示表结构

DESCRIBE 表名;

Field 列显示了列名。

Type 列显示了列的数据类型。

Null 列显示了该列是否允许NULL值。

Key 列显示了该列是否被索引(PRI表示主键,UNI表示唯一索引,MUL表示非唯一索引)。

Default 列显示了列的默认值(如果有的话)。

Extra 列提供了额外的信息,如 auto_increment 表示该列是自动递增的,CURRENT_TIMESTAMP 表示该列在插入新记录时会自动设置为当前时间戳。

16、显示存储过程

SHOW PROCEDURE STATUS;

17、创建存储过程

DELIMITER //

CREATE PROCEDURE 存储过程名()

BEGIN

-- 存储过程体

END //

DELIMITER ;

DELIMITER 关键字被用来改变命令分隔符,以便在存储过程体内部可以包含多个分号(;),而不会被MySQL解释器错误地解释为命令的结束。

18、调用存储过程

CALL 存储过程名();

19、显示存储过程的定义

SHOW CREATE PROCEDURE 存储过程名;

20、删除存储过程

DROP PROCEDURE 存储过程名;

这些命令仅涵盖了MySQL数据库的基本操作。实际应用中,您可能还需要使用更高级的SQL语句和功能。建议查阅MySQL官方文档以获取更多详细信息和示例。

创建用户并授权

创建一个用户newuser,并授予所有权限:

bash 复制代码
 grant all privileges on *.* to 'newuser'@'%' identified by 'password';

试图为新用户newuser授予所有权限,并允许该用户从任何主机(% 表示所有主机)连接到MySQL服务器,同时设置密码为password。

授予所有用户权限:

修改用户密码

修改newuser的密码:

bash 复制代码
  alter user 'newuser'@'%' identified by 'newpassword';

修改用户 newuser(从任何主机 % 连接)的密码为 newpassword

回收权限

回收newuser的所有权限:

bash 复制代码
  revoke all privileges, grant option from 'newuser'@'%';

先撤销所有全局权限,然后删除用户,再重新创建用户(如果需要的话),因为直接撤销所有权限可能比较复杂。

my.cnf配置文件

root@candy-nginx202 binlog# cat /etc/my.cnf

bash 复制代码
[client]
# 设置客户端字符集
default-character-set=utf8mb4

[mysql]
# 设置mysql客户端连接默认字符集
default-character-set=utf8mb4

[mysqld]
# 设置服务器端字符集和校验规则
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

# 开启独立表空间
innodb_file_per_table=1

# 开启二进制日志,并设置路径
server-id=1 # 必须设置,用于GTID和主从复制
log_bin=/var/lib/mysql/binlog/mysql-bin.log # 替换为实际的日志存放路径
binlog_format=ROW # 使用ROW格式,支持GTID

# 开启GTID
gtid_mode=ON
enforce_gtid_consistency=true
# 如果是新部署的MySQL实例,可以不需要下面这行。如果是已有实例迁移到GTID,则需要执行全备恢复后加上
# init_sql='SET @@GLOBAL.GTID_PURGED="uuid:1-1";' # 替换uuid和序号为你自己的GTID

# 可能还需要调整其他与GTID相关的设置,如auto_position等,具体根据实际情况和需求来定

5.4、查看数据目录大小

root@candy-nginx202 \~# cd /var/lib/mysql

root@candy-nginx202 mysql# du -sh /var/lib/mysql/candy

2.8G /var/lib/mysql/candy

root@candy-nginx202 mysql# du -sh /var/lib/mysql/binlog

4.3G /var/lib/mysql/binlog

5.5、查看服务器硬件配置

grep -c processor /proc/cpuinfo

free -g

fdisk -l | grep shd

还应该使用其他命令,查看服务器的具体硬件信息,比如服务器型号,CPU核心,RAID配置,内存配置等。

相关推荐
凌虚6 小时前
面向 MySQL 用户的 PostgreSQL 快速上手指南
数据库·后端·架构
五阿哥永琪6 小时前
MySQL中操作json的函数!
数据库·mysql·json
来者皆善6 小时前
了解Mysql优化吗?如何优化索引?
数据库·mysql
赤壁小虾8 小时前
【渲染流水线】[逐片元阶段]-[透明度测试]以UnityURP为例
java·前端·数据库
MC皮蛋侠客8 小时前
SQLAlchemy 系列(七):高级建模与高效写入——批量 DML、方言与扩展
数据库·python
奈斯先生Vector9 小时前
把 Midjourney 二次编辑做成生产系统:customId 能力令牌、Action Graph 与 WebUI 精修工作台
数据库·人工智能·架构·aigc·音视频·midjourney
fengci.10 小时前
Microweber CMS 未授权路径穿越漏洞(CVE-2026-65694)
android·开发语言·前端·学习·php
Lethehong10 小时前
双擎并驱·全链路并行:KFS让TB级异构增量同步秒级到达
数据库
MC皮蛋侠客10 小时前
SQLAlchemy 系列(八):AsyncIO、并发与 Web 生命周期——让每个并发任务持有自己的 Session
数据库·python
一水10 小时前
Redis实战:一个AI工作流系统里的五个应用场景,从传参到限流的完整链路
数据库·redis·wpf