MySQL系列:系列结构和基础管理

文章目录

MySQL工作模型及实例

MySQL 客户端/服务器工作模型(C/S)

1.本地socket链接方式

socket=/tmp/mysql.sock

shell 复制代码
mysql -uroot -p -S /tmp/mysql.sock

说明:只能在本地使用,不依赖于IP和端口

2.远程TCPIP链接方式

shell 复制代码
mysql -uroot -p -h 127.0.0.1 -P 3306

服务端:实例

实例:mysqld+工作线程+预分配的内存结构

功能:管理数据

MySQLd的程序结构

查看连接线程

mysql 复制代码
show processlist;

MySQL的逻辑结构

表+库

查看mysql中所有的数据库

mysql 复制代码
show databases;

切换到某个数据库

mysql 复制代码
use mysql;

查看库中所有的表

mysql 复制代码
show tables;

查看表结构

mysql 复制代码
desc user;

MySQL的物理存储结构

段:一个表就是一个段,可以由1个或者多个区构成

区:一个区(簇)默认1M,由连续的64个page构成

页:一个页,默认16KB,由连续的4个OS block构成

OS 块:一个块,4KB,由连续的8个扇区构成

扇区:一个扇区,512B

MySQL基础管理

用户管理

1.用户的定义 mysql@'白名单'

robin@'localhost' : robin用户能够通过本地登录MySQL(socket)

robin@'192.168.0.130': robin用户能够通过192.168.0.130远程登录MySQL服务器

robin@'192.168.0.%': robin用户能够通过192.168.0.xx/24远程登录MySQL服务器

robin@'192.168.0.5%': robin用户能够通过192.168.0.50-59远程登录MySQL服务器

robin@'192.168.0.130/255.255.254.0': robin用户能够通过192.168.0.130远程登录MySQL服务器 23位子网掩码

robin@'%': robin用户能够通过所有IP远程登录MySQL服务器

robin@'vmcode': robin用户能够通过主机名为vmcode远程登录MySQL服务器

robin@'vmcode.cn': robin用户能够通过域名为vmcode.cn远程登录MySQL服务器

2.用户管理

查询用户信息

mysql 复制代码
select user,host,authentication_string from mysql.user;

创建用户

mysql 复制代码
create user robin@'localhost';

创建用户并设置密码

mysql 复制代码
create user robin@'192.168.0.%' identified by 'admin123';

mysql所有用户存储位置:cd /data/mysql/3306/data/mysql 中的user.MYD文件

执行命令:strings user.MYD

修改用户密码

mysql 复制代码
alter user robin@'localhost' identified by 'admin123';

删除用户

mysql 复制代码
drop user robin@'localhost';

注意:8.0版本以前,可以通过grant命令建立用户和授权

权限管理

1.查看权限:

mysql 复制代码
show privileges;
mysql 复制代码
+-------------------------+---------------------------------------+---------------+
| Privilege               | Context                               | Comment                                               |
+-------------------------+---------------------------------------+---------------+
| Alter                   | Tables                                | To alter the table                                    |
| Alter routine           | Functions,Procedures                  | To alter or drop stored functions/procedures          |
| Create                  | Databases,Tables,Indexes              | To create new databases and tables                    |
| Create routine          | Databases                             | To use CREATE FUNCTION/PROCEDURE                      |
| Create temporary tables | Databases                             | To use CREATE TEMPORARY TABLE                         |
| Create view             | Tables                                | To create new views                                   |
| Create user             | Server Admin                          | To create new users                                   |
| Delete                  | Tables                                | To delete existing rows                               |
| Drop                    | Databases,Tables                      | To drop databases, tables, and views                  |
| Event                   | Server Admin                          | To create, alter, drop and execute events             |
| Execute                 | Functions,Procedures                  | To execute stored routines                            |
| File                    | File access on server                 | To read and write files on the server                 |
| Grant option            | Databases,Tables,Functions,Procedures | To give to other users those privileges you possess   |
| Index                   | Tables                                | To create or drop indexes                             |
| Insert                  | Tables                                | To insert data into tables                            |
| Lock tables             | Databases                             | To use LOCK TABLES (together with SELECT privilege)   |
| Process                 | Server Admin                          | To view the plain text of currently executing queries |
| Proxy                   | Server Admin                          | To make proxy user possible                           |
| References              | Databases,Tables                      | To have references on tables                          |
| Reload                  | Server Admin                          | To reload or refresh tables, logs and privileges      |
| Replication client      | Server Admin                          | To ask where the slave or master servers are          |
| Replication slave       | Server Admin                          | To read binary log events from the master             |
| Select                  | Tables                                | To retrieve rows from table                           |
| Show databases          | Server Admin                          | To see all databases with SHOW DATABASES              |
| Show view               | Tables                                | To see views with SHOW CREATE VIEW                    |
| Shutdown                | Server Admin                          | To shut down the server                               |
| Super                   | Server Admin                          | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.   |
| Trigger                 | Tables                                | To use triggers                                       |
| Create tablespace       | Server Admin                          | To create/alter/drop tablespaces                      |
| Update                  | Tables                                | To update existing rows                               |
| Usage                   | Server Admin                          | No privileges - allow connect only                    |
+-------------------------+---------------------------------------+---------------------------+

2.授权、回收权限操作

语法:

8.0-: grant 权限1,权限2,... on 对象 to 用户 identified by '密码';

8.0+:create user 用户 identified by '密码'; grant 权限1,权限2,... on 对象 to 用户;

grant 权限1,权限2,.... on 对象 to 用户 identified by '密码' with grant option;

ALL : 管理员(不包括grant option权限)

权限1,权限2,... : 普通用户(业务用户,开发用户)

Grant option : 给别的用户授权

对象:

*.* :- -----> chmod -R 755 /

robin.* -----> chmod -R 755 /robin

robin.t1 -----> chmod -R 755 /robin/t1

(1).创建并授权管理员用户robin,能够通过192.168.0.%网段登录并管理数据库

mysql 复制代码
grant all on *.* to robin@'192.168.0.%' identified by 'admin123' with grant option;

(2).查看权限

mysql 复制代码
show grants for robin@'192.168.0.%';

(3).查看全部用户权限

mysql 复制代码
select * from mysql.user \G -- \G竖排显示

(4).创建并授权一个test@'192.168.0.%'业务用户,能够对test库下所有对象进行create,select,update,delete,insert操作

mysql 复制代码
grant create,select,update,delete,insert on test.* to test@'192.168.0.%' identified by 'admin123';

(5)查看权限

mysql 复制代码
select * from mysql.db \G

(6).各权限表说明

mysql.db: 基于库结构的权限 test.*

mysql.tables_priv: 基于表结构的权限 test.t1

mysql.columns_priv: 基于列结构的权限 列

mysql.procs_priv: 基于存储过程结构的权限

(7).回收权限

MySQL不同通过重复授权的方式修改权限,只能通过回收权限方式进行修改

mysql 复制代码
revoke create on test.* to test@'192.168.0.%';

扩展:超级管理员密码忘记解决方案

--skip-grant-tables :跳过授权表

--skip-networking :跳过TCP/IP连接

1.关掉数据库

shell 复制代码
systemctl stop mysqld

2.使用安全模式启动

shell 复制代码
service mysqld start --skip-grant-tables --skip-networking
#或者
mysqld_safe --skip-grant-tables --skip-networking &

3.登录数据库并修改密码

复制代码
mysql> alter user root@'localhost' identified by 'admin123';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges; #手工加载授权表
Query OK, 0 rows affected (0.00 sec)

mysql> alter user root@'localhost' identified by 'admin123';
Query OK, 0 rows affected (0.00 sec)

4.重启数据库

shell 复制代码
service mysqld restart

连接管理

1.mysql自带客户端

mysql:

参数列表:

-u 用户名-p 密码-S 本地socket文件位置-h 数据库IP地址

-P 数据库端口号-e 免交互执行数据库命令< 导入sql脚本

Socket:

前提:数据中必须实现授权robin@'lcoalhost'用户 也就是哪个localhost授权了就可以登录

shell 复制代码
mysql -urobin -padmin123 -S /tmp/mysql.sock
mysql -urobin -p -S /tmp/mysql.sock
mysql -padmin123 -S /tmp/mysql.sock  #root用户
mysql  #默认会去找/tmp/mysql.sock
mysql -uroot -padmin123

TCP/IP:

前提:必须提前创建好可以远程连接的用户(例如:robin@'192.168.0.%')

shell 复制代码
mysql -urobin -p -h 192.168.0.130 -P 3306

MySQL区分连接是远程还是本地连接

mysql 复制代码
show processlist;

MySQL免交互运行命令

shell 复制代码
mysql -uroot -padmin123 -e "select @@datadir"

MySQL导入SQL脚本

shell 复制代码
yum install -y lrzsz
rz -e
mysql -uroot -p < /opt/my.sql

初始化配置

1.三种方式:

源码安装------>编译过程中设置初始化参数

配置文件------>数据库启动之前,设定配置文件参数 /etc/my.cnf

启动脚本命令行

2.配置文件读取顺序

/etc/my.cnf ---->/etc/mysql/my.cnf ----> /usr/local/mysql/etc/my.cnf ---->~/.my.cnf

shell 复制代码
mysqld --help --verbose | grep my.cnf

3.配置

服务器端\] :影响数据库服务端运行 \[mysqld

mysql_safe

server\] :代表服务端的所有 \[客户端\]:影响本地客户端连接,不影响远程客户端 \[mysql

mysqldump

client\] :代表客户端的所有 #### 启动关闭 **启动** systemctl start mysqld ------>mysql.server ------>mysql_safe ------>mysqld mysqld_safe和mysqld,可以在启动数据库时,加入自己执行的参数,例如--defaults-file=/usr/lcoal/mysql/etc/my.cnf **关闭** ```shell systemctl stop mysqld service mysqld stop /etc/init.d/mysqld stop mysqladmin -uroot -padmin123 shutdwon mysql -uroot -padmin123 -e "shutdwon" ``` #### 多实例 **一.同版本多实例** (1).规划 配置文件 3份 :/data/mysql/330{7...9}/my.cnf 数据目录 3份:/data/mysql/330{7...9}/data 日志目录 3份:/data/mysql/330{7...9}/binlog Socket 3份: /tmp/mysql330{7...9}.sock 端口 3份:prot=3307,3308,3309 server_id 3份:server_id=7,8,9 (2).配置过程 **1.创建需要的目录** ```shell mkdir -p /data/mysql/330{7..9}/{data,binlog} ``` **2.创建配置文件** ```shell cat>/data/mysql/3307/my.cnf</data/mysql/3308/my.cnf</data/mysql/3309/my.cnf</usr/lib/systemd/system/mysqld3307.service</usr/lib/systemd/system/mysqld3308.service</usr/lib/systemd/system/mysqld3309.service</data/mysql/3317/my.cnf</data/mysql/3318/my.cnf</usr/lib/systemd/system/mysqld3317.service</usr/lib/systemd/system/mysqld3318.service<

相关推荐
IT成长日记6 小时前
【MySQL基础】 JSON函数入门
mysql·json·json函数
天狼12227 小时前
第1章-3 MySQL的逻辑架构
mysql·逻辑架构
码觉客8 小时前
MySQL 5.7+ for Windows 解压缩版配置安装说明
mysql
THRUSTER111119 小时前
MySQL-- 函数(单行函数):数值函数, 字符串函数
数据库·mysql·函数·navicat·单行函数
橙序研工坊10 小时前
MySQL的进阶语法7(索引-B+Tree 、Hash、聚集索引 、二级索引(回表查询)、索引的使用及设计原则
数据库·sql·mysql
Bonnie_121510 小时前
07-MySQL-事务的隔离级别以及底层原理
数据库·mysql
王强你强11 小时前
MySQL 高级查询:JOIN、子查询、窗口函数
数据库·mysql
草巾冒小子11 小时前
brew 安装mysql,启动,停止,重启
数据库·mysql
振鹏Dong14 小时前
MySQL 事务底层和高可用原理
数据库·mysql
·云扬·14 小时前
深度剖析 MySQL 与 Redis 缓存一致性:理论、方案与实战
redis·mysql·缓存