上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

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

guduadmin291月前

文章目录

    • MySQL工作模型及实例
      • MySQL 客户端/服务器工作模型(C/S)
      • 服务端:实例
      • MySQLd的程序结构
      • MySQL的逻辑结构
      • MySQL的物理存储结构
      • MySQL基础管理
        • 用户管理
        • 权限管理
        • 连接管理
        • 初始化配置
        • 启动关闭
        • 多实例

          MySQL工作模型及实例

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

          MySQL系列:系列结构和基础管理,image,第1张

          1.本地socket链接方式

          socket=/tmp/mysql.sock

          mysql -uroot -p -S /tmp/mysql.sock
          

          MySQL系列:系列结构和基础管理,image,第2张

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

          2.远程TCPIP链接方式

          mysql -uroot -p -h 127.0.0.1 -P 3306
          

          MySQL系列:系列结构和基础管理,image,第3张

          服务端:实例

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

          功能:管理数据

          MySQL系列:系列结构和基础管理,image,第4张

          MySQLd的程序结构

          MySQL系列:系列结构和基础管理,image,第5张

          查看连接线程

          show processlist;
          

          MySQL系列:系列结构和基础管理,image,第6张

          MySQL的逻辑结构

          表+库

          查看mysql中所有的数据库

          show databases;
          

          MySQL系列:系列结构和基础管理,image,第7张

          切换到某个数据库

          use mysql;
          

          MySQL系列:系列结构和基础管理,image,第8张

          查看库中所有的表

          show tables;
          

          MySQL系列:系列结构和基础管理,image,第9张

          查看表结构

          desc user;
          

          MySQL系列:系列结构和基础管理,image,第10张

          MySQL的物理存储结构

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

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

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

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

          扇区:一个扇区,512B

          MySQL系列:系列结构和基础管理,image,第11张

          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.用户管理

          查询用户信息

          select user,host,authentication_string from mysql.user;
          

          MySQL系列:系列结构和基础管理,image,第12张

          创建用户

          create user robin@'localhost';
          

          MySQL系列:系列结构和基础管理,image,第13张

          创建用户并设置密码

          create user robin@'192.168.0.%' identified by 'admin123';
          

          MySQL系列:系列结构和基础管理,image,第14张

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

          MySQL系列:系列结构和基础管理,image,第15张

          执行命令:strings user.MYD

          MySQL系列:系列结构和基础管理,image,第16张

          修改用户密码

          alter user robin@'localhost' identified by 'admin123';
          

          MySQL系列:系列结构和基础管理,image,第17张

          删除用户

          drop user robin@'localhost';
          

          MySQL系列:系列结构和基础管理,image,第18张

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

          权限管理

          1.查看权限:

          show privileges;
          

          MySQL系列:系列结构和基础管理,image,第19张

          +-------------------------+---------------------------------------+---------------+
          | 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.%网段登录并管理数据库

          grant all on *.* to robin@'192.168.0.%' identified by 'admin123' with grant option;
          

          MySQL系列:系列结构和基础管理,image,第20张

          (2).查看权限

          show grants for robin@'192.168.0.%';
          

          MySQL系列:系列结构和基础管理,image,第21张

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

          select * from mysql.user \G -- \G竖排显示
          

          MySQL系列:系列结构和基础管理,image,第22张

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

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

          MySQL系列:系列结构和基础管理,image,第23张

          (5)查看权限

          select * from mysql.db \G
          

          MySQL系列:系列结构和基础管理,image,第24张

          (6).各权限表说明

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

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

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

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

          (7).回收权限

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

          revoke create on test.* to test@'192.168.0.%';
          

          MySQL系列:系列结构和基础管理,image,第25张

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

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

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

          1.关掉数据库

          systemctl stop mysqld
          

          2.使用安全模式启动

          service mysqld start --skip-grant-tables --skip-networking
          #或者
          mysqld_safe --skip-grant-tables --skip-networking &
          

          MySQL系列:系列结构和基础管理,image,第26张

          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.重启数据库

          service mysqld restart
          

          连接管理

          1.mysql自带客户端

          mysql:

          参数列表:

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

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

          MySQL系列:系列结构和基础管理,image,第27张

          Socket:

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

          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.%’)

          mysql -urobin -p -h 192.168.0.130 -P 3306
          

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

          show processlist;
          

          MySQL系列:系列结构和基础管理,image,第28张

          MySQL免交互运行命令

          mysql -uroot -padmin123 -e "select @@datadir"
          

          MySQL系列:系列结构和基础管理,image,第29张

          MySQL导入SQL脚本

          yum install -y lrzsz
          rz -e
          mysql -uroot -p < /opt/my.sql
          

          MySQL系列:系列结构和基础管理,image,第30张

          MySQL系列:系列结构和基础管理,image,第31张

          MySQL系列:系列结构和基础管理,image,第32张

          初始化配置

          1.三种方式:

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

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

          启动脚本命令行

          2.配置文件读取顺序

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

          mysqld --help --verbose | grep my.cnf
          

          MySQL系列:系列结构和基础管理,image,第33张

          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
          

          关闭

          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.创建需要的目录

          mkdir -p /data/mysql/330{7..9}/{data,binlog}
          

          2.创建配置文件

          cat>/data/mysql/3307/my.cnf</data/mysql/3308/my.cnf</data/mysql/3309/my.cnf< 
          

          3.初始化数据

          mv /etc/my.cnf /etc/my.cnf.bak
          #World-writable config file '/data/mysql/3307/my.cnf' is ignored.
          #mysql担心这种文件被其他用户恶意修改,所以忽略掉这个配置文件
          chmod 644 /data/mysql/330{7..9}/my.cnf
          chown -R mysql.mysql /data/mysql
          mysqld --initialize-insecure --user=mysql --datadir=/data/mysql/3307/data --basedir=/usr/local/mysql
          mysqld --initialize-insecure --user=mysql --datadir=/data/mysql/3308/data --basedir=/usr/local/mysql
          mysqld --initialize-insecure --user=mysql --datadir=/data/mysql/3309/data --basedir=/usr/local/mysql
          

          4.准备启动脚本

          cat>/usr/lib/systemd/system/mysqld3307.service</usr/lib/systemd/system/mysqld3308.service</usr/lib/systemd/system/mysqld3309.service< 
          

          5.启动多实例

          systemctl start mysqld3307
          systemctl start mysqld3308
          systemctl start mysqld3309
          

          6.启动完成

          netstat -tulnp | grep mysqld
          

          MySQL系列:系列结构和基础管理,image,第34张

          二.不同版本多实例

          1.下载

          mkdir -p /usr/local/src/{mysql56,mysql80}
          wget -P /usr/local/src/mysql56 https://repo.huaweicloud.com/mysql/Downloads/MySQL-5.6/mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz
          cd /usr/local/src/mysql56
          tar -zxvf mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz
          ln -s /usr/local/src/mysql56/mysql-5.6.51-linux-glibc2.12-x86_64 /usr/lcoal/mysql56
          wget -P /usr/local/src/mysql80 https://repo.huaweicloud.com/mysql/Downloads/MySQL-8.0/mysql-8.0.23-linux-glibc2.12-x86_64.tar
          cd /usr/local/src/mysql80 
          tar -xvf mysql-8.0.23-linux-glibc2.12-x86_64.tar
          ln -s /usr/local/src/mysql56/mysql-8.0.23-linux-glibc2.12-x86_64
          vim /etc/profile
          #注释掉mysql
          source /etc/profile
          # 打开新窗口 因为source没用
          mkdir -p /data/mysql/331{7..9}/{data,binlog}
          chown -R mysql.mysql /data/mysql/
          

          2.准备配置文件

          cat>/data/mysql/3317/my.cnf</data/mysql/3318/my.cnf< 
          

          3.初始化数据

          #5.6
          /usr/local/mysql56/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/3317/data --basedir=/usr/local/mysql56
          /usr/local/mysql80/bin/mysqld --initialize-insecure --user=mysql --datadir=/data/mysql/3318/data --basedir=/usr/lcoal/mysql80 
          #5.6报错
          Installing MySQL system tables.../usr/local/mysql56/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
          yum install -y libaio
          

          4.准备启动脚本

          cat>/usr/lib/systemd/system/mysqld3317.service</usr/lib/systemd/system/mysqld3318.service< 
          

          MySQL系列:系列结构和基础管理,image,第35张

          5**.启动mysql5.7和测试**

          vim /etc/profile
          #还原mysql配置
          source /etc/profile
          mv /etc/my.cnf.bak /etc/my.cnf
          /etc/init.d/mysqld start 
          mysql -S /tmp/mysql3318.sock
          

          MySQL系列:系列结构和基础管理,image,第36张

网友评论

搜索
最新文章
热门文章
热门标签
 
 梦见龙卷风  孕妇梦见小狗  梦见怀孕周公解梦