MySQL数据库管理

1. 安装与配置

  • 安装:MySQL可以安装在多种操作系统上,包括Linux、Windows和macOS。可以通过官方的安装包、操作系统的包管理器或Docker进行安装。
  • 配置 :安装后,需要进行一些基本配置,如设置root用户密码、配置网络访问、调整缓存和内存设置等。这些配置可以通过修改my.cnf(Linux)或my.ini(Windows)文件来完成。

2. 数据库与表的管理

  • 创建与删除数据库 :使用CREATE DATABASEDROP DATABASE命令来创建和删除数据库。
  • 创建与删除表 :使用CREATE TABLEDROP TABLE命令来创建和删除表,同时需要定义表的结构(字段、数据类型、约束等)。

3. 数据操作

  • 插入数据 :使用INSERT INTO语句插入数据。
  • 查询数据 :使用SELECT语句进行数据查询,支持复杂的查询操作,如JOIN、子查询、聚合函数等。
  • 更新数据 :使用UPDATE语句更新数据。
  • 删除数据 :使用DELETE语句删除数据。

4. 索引与性能优化

  • 索引 :通过创建索引(CREATE INDEX)来加速查询操作。常用的索引类型有BTREE和HASH。
  • 查询优化 :通过分析查询计划(使用EXPLAIN)和调整查询语句来优化性能。
  • 缓存:配置查询缓存、调整缓冲池大小以提高性能。

5. 安全管理

  • 用户管理 :使用CREATE USERGRANTREVOKE命令管理数据库用户及其权限。
  • 密码管理:设置强密码策略,定期更新密码。
  • 访问控制:通过配置防火墙、网络设置和SSL/TLS加密来确保数据传输的安全。

6. 备份与恢复

  • 备份 :使用mysqldump工具进行逻辑备份,或通过MySQL Enterprise Backup进行物理备份。
  • 恢复 :通过备份文件进行数据恢复,可以使用mysql命令行工具导入备份数据。

7. 高可用性与扩展

  • 主从复制:配置主从复制实现数据的同步备份,提高数据的可用性和读性能。
  • 集群:使用MySQL Cluster或Galera Cluster实现高可用性和负载均衡。
  • 分片:通过数据库分片技术实现数据水平扩展。

8. 监控与日志

  • 监控 :使用MySQL自带的performance_schema或第三方工具(如Prometheus、Grafana)进行数据库性能监控。
  • 日志:配置查询日志、错误日志和慢查询日志,帮助诊断和解决问题。

查看数据库结构

root@localhost \~\]# mysql -u root -ppwd123 mysql\> show databases; mysql\> use mysql mysql\> show tables; mysql\> describe user; mysql\> select \* from user\\G; 备注: * information_schema数据库:保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权 限等 * performance_schema:用于监控MySQL server在一个较低级别的运行过程中的资源消耗、资源等待等情况 * mysql:是 MySQL 服务正常运行所需的数据库,其中包含了用户认证相关的表 ### 创建及删除数据库和表 ##### (1)创建新库 mysql\> create database auth; ##### (2)创建新表 mysql\> use auth; mysql\> CREATE TABLE users (user_name CHAR(16) NOT NULL, user_passwd CHAR(48) DEFAULT '', PRIMARY KEY (user_name)); 备注: DEFAULT '' 密码默认为空 注意: 5.7以前的版本的password()加密函数可以生成16位密文,5.7后的password()函数可以生成41位的密文,其算法为mysql_native_password;设置密码字段的时候要考虑加密,提供的字符长度要够用。,否则在添加记录时,如果使用了password()加密函数保存密码字段,会提示字符长度错误。 8.0的mysql已经弃用password() ##### (3)删除一个数据表 mysql\> DROP TABLE auth.users; ##### (4)删除一个数据库 mysql\>**DROP DATABASE auth;** ### SQL语言 DDL:数据定义语言(create、drop、alter) DML:数据操纵语言(insert、update、delete) DQL:数据查询语言(select) DCL:数据控制语言(grant、revoke、commit、rollback) ### 管理表中的数据记录 ##### (1)插入数据记录 mysql\>**use auth;** mysql\>INSERT INTO users(user_name,user_passwd) VALUES('zhangsan', PASSWORD ('123456')); mysql\>**INSERT INTO users VALUES('lisi', PASSWORD('654321'));** ##### (2)查询数据记录 mysql\>**select \* from auth.users;** mysql\>**SELECT user_name,user_passwd FROM auth.users WHERE user_name='zhangsan';** ##### (3)修改数据记录 mysql\>**UPDATE auth.users SET user_passwd=PASSWORD('') WHERE user_name= 'lisi';** mysql\>**SELECT \* FROM auth.users;** mysql\>**UPDATE mysql.user SET authentication_string=PASSWORD('123457') WHERE user='root';** mysql\>**FLUSH PRIVILEGES;**/ \[root@www \~\]# **mysqladmin -u root -p'123457' password '123456'** ##### (4)删除数据记录 mysql\>**DELETE FROM auth.users WHERE user_name='lisi';** mysql\>**SELECT \* FROM auth.users;** ### 数据库表高级操作 ##### (1)克隆表 mysql\>**create table user01 like auth.users;**//通过 LIKE 方法,复制 users 表生成 tmp 表,注意,此表为空 mysql\>**insert into user01 select \* from auth.users;**//通过 player 表生成 tmp 表内数据记录 ##### (2)删除表 mysql\> delete from user01 where user_name='zhangsan'; mysql\>**delete from user01;** mysql\>**insert into user01 select \* from auth.users;** mysql\>**truncate table user01;** mysql\>**select count(\*) from user01;** 备注: truncate和delete的区别: truncate删除表中的内容,不删除表结构,释放空间; delete删除表中的内容,不删除表结构,但不释放空间 truncate删除数据后重新写数据会从1开始, delete删除数据后只会从删除前的最后一行续写;内存空间上,truncate省空间 delete属于DML语句,而truncate和drop都属于DDL语句 delete可以在后续加上where进行针对行的删除 truncate和drop后面只能加上表名,直接删除表,无法where drop table 表名 删除表,内容连带结构一起删除; ##### (2)临时表 mysql\>**select \* from mytmp;**//查看 mytmp 表是否存在 mysql\>**CREATE TEMPORARY TABLE \`mytmp\` (** **\`id\` int(10) NOT NULL AUTO_INCREMENT,** **\`NAME\` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,** **\`level\` int(10) NOT NULL,** **PRIMARY KEY (id)** ) **ENGINE=InnoDB DEFAULT CHARSET=utf8; //**创建临时表 mysql\> **insert into mytmp(name,level) values('aa',10);**//插入数据 Query OK, 1 row affected (0.01 sec) mysql\>**select \* from mytmp;** mysql\>**quit**//退出当前连接 Bye mysql\>**select \* from mytmp;**//重新连接 MySQL 之后查看临时表状态 ### 数据库用户授权 #### 1:授予权限 mysql\>**GRANT select ON auth.\* TO 'zhangsan'@'localhost' IDENTIFIED BY '123456';** #### 2:查看权限 mysql\> SHOW GRANTS FOR 'zhangsan'@'localhost'; #### 3:验证权限 \[root@localhost \~\]# mysql -u zhangsan -p123456 mysql\> select \* from auth.users; mysql\> select \* from mysql.user; 备注: zhangsan用户可以查看auth数据库的表,但不能查看mysql数据库的表。 #### 4:撤销权限 mysql\> revoke all on auth.\* from zhangsan@'localhost'; \[root@localhost \~\]# mysql -u zhangsan -p123456 mysql\> select \* from mysql.user; 撤销权限后,已经无法查看auth中的表

相关推荐
A__tao3 分钟前
SQL 转 Java 实体类工具
java·数据库·sql
m0_6530313617 分钟前
腾讯云认证考试报名 - TDSQL数据库交付运维专家(TCCE PostgreSQL版)
运维·数据库·腾讯云
叁沐1 小时前
MySQL 06 全局锁和表锁:给表加个字段怎么有这么多阻碍?
mysql
小马哥编程1 小时前
【iSAQB软件架构】架构决策记录-ADR
数据库·架构·系统架构·设计规范
萧鼎1 小时前
深度探索 Py2neo:用 Python 玩转图数据库 Neo4j
数据库·python·neo4j
m0_653031362 小时前
腾讯云认证考试报名 - TDSQL数据库交付运维专家(TCCE MySQL版)
运维·数据库·腾讯云
power 雀儿2 小时前
集群聊天服务器---MySQL数据库的建立
服务器·数据库·mysql
骑着王八撵玉兔4 小时前
【性能优化与架构调优(二)】高性能数据库设计与优化
数据库·性能优化·架构
Edingbrugh.南空4 小时前
Flink MySQL CDC 环境配置与验证
mysql·adb·flink
BD_Marathon5 小时前
Ubuntu:Mysql服务器
服务器·mysql·ubuntu