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配置,内存配置等。

相关推荐
恋猫de小郭26 分钟前
Flutter Patchwork,不用 Fork 改依赖包源码的第三方工具
android·前端·flutter
三少爷的鞋2 小时前
“结构化”这个词,本质上就是——把混乱的东西变成有组织、有规则、有边界的东西
android
方白羽18 小时前
Android Gradle 缓存与文件目录深度解析
android·gradle·android studio
李白客20 小时前
KES新版MySQL兼容能力再升级意味着什么?
mysql·国产数据库
ClouGence1 天前
Oracle 数据同步为什么会出现数据不一致?长事务是常被忽略的原因
数据库·后端·oracle
曲幽1 天前
Termux里的二进制和脚本,到底怎么运行才不踩坑?Termux-service 保活妙招!
android·termux·nohup·services·wake-lock
plainGeekDev1 天前
单例模式 → object 声明
android·java·kotlin
程序员陆业聪1 天前
读者点单·03|Compose 与传统 View 混用的 12 个真实坑
android
程序员陆业聪1 天前
读者点单·02|Android 启动优化实战:Trace 抓取→Application 编排→冷启动全流程拆解
android
Coffeeee1 天前
帮你快速理解AI Agent之我想招个Android实习生
android·人工智能·agent