zoukankan      html  css  js  c++  java
  • mysql 多实例

    第三章mysql的多实例

    (一).MySQL5.6与MySQL5.7安装的区别

    一.
    二.MySQL用户权限管理 
    
    三.MySQL连接管理 
    
    四.MySQL启动关闭流程 
    
    五.MySQL实例初始化配置 
    
    六.MySQL多实例配置 
    

    (二).MySQL的用户管理

    Linux上用户操作 
    
    创建用户:useradd 
    
    删除用户:userdel 
    
    修改用户:usermod 
    
    MySQL上用户操作 
    
    创建用户:create user 、 grant 
    
    #创建用户 
    
    create user zls@'%'; 
    
    #创建用户同时给密码(5.7)如果用户不存在没法使用grant 
    
    create user qls@'%' identified by '123'; 
    
    grant all on *.* to qls@'%'; 
    
    删除用户:drop user 
    
    mysql> drop user root@'db02'; 
    
    Query OK, 0 rows affected (0.00 sec) 
    
    mysql> drop user ''@'db02'; 
    
    Query OK, 0 rows affected (0.00 sec) 
    修改用户:update、alter、grant
    

    (三).MySQL用户定义

    用户名@主机域
    
    root@'%' select 
    
    root@'localhost' 超级用户 
    
    root@'127.0.0.1' 超级用户 
    
    root@'10.0.0.%' 
    
    root@'10.%.%.%' 
    
    root@'10.0.0.0/255.255.255.0' 
    
    root@'db01' 
    

    (四).MySQL用户管理实战

    
    1.误删除root用户 
    
    2.忘记root密码 
    
    mysql> update mysql.user set password=PASSWORD('123') where user='root' and 
    
    host='localhost'; 
    
    mysql> select user,host from mysql.user; 
    
    +------+------------------------+ 
    
    | user | host | 
    
    +------+------------------------+ 
    
    | root | % | 
    
    | root | 10.0.0.0/24 |#不能用 
    
    | root | 10.0.0.0/255.255.255.0 |#能用 
    
    | root | 127.0.0.1 | 
    
    | root | localhost | 
    
    +------+------------------------+ 
    
    [root@db01 bin]# mysqld_safe --skip-grant_tables & 
    
    --skip-grant_tables #跳过授权表 
    
    [root@db01 bin]# mysqld_safe --skip-grant-tables --skip-networking & 
    
    --skip-networking # 跳过网络(安全) 
    
    mysql> insert into user(user,host,password) values('root','localhost',PASSWORD('123')); 
    
    mysql> insert into user(user,host,password,ssl_cipher,x509_issuer,x509_subject) 
    
    values('root','localhost',PASSWORD('123'),'null','null','null');
    
    MySQL的权限管理 
    
    给开发开权限 
    
    权限最小化,最小级别不是表级别,是列级别 
    
    主机域:10.0.0.5% 可以连接:10.0.0.50-59 10.0.0.5 
    
    脱敏:脱离敏感信息 
    
    数据库集群,10.0.0.51 52 53 54 
    

    (五).作用对象分解

    [当前MySQL实例中所有库下的所有表] wordpress.* 
    [当前MySQL实例中wordpress库中所有表(单库级别)] 
    
    wordpress.user 
    [当前MySQL实例中wordpress库中的user表(单表级别)] 
    
    单列级别,是最小级别 
    
    先停止数据库 
    
    mysqld_safe --skip-grant-tables --skip-networking & 
    
    #1.update修改密码 
    
    update mysql.user set password=PASSWORD('123') where user='root' and host='localhost'; 
    
    mysql> flush privileges; 
    
    #2.set 
    
    mysql> set password=PASSWORD('1'); 
    
    #3.grant 
    
    mysql> grant all on *.* to root@'localhost' identified by '2'; 
    
    #4.mysqladmin 
    
    [root@db01 ~]# mysqladmin -uroot -p2 password '123' 
    
    #5.alter 
    
    INSERT,SELECT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, 
    
    INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, 
    
    REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER 
    
    ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE 
    
    grant INSERT,SELECT, UPDATE, DELETE on *.* to dev@'xxx'; 
    
    grant select on mysql.user.user to dev@'10.0.0.5%' identified by '123'; 
    
    grant select(user,host) on wzry.user to no_vip@'%' identified by '123'; 
    
    grant all privileges on *.* to oldboy@’10.0.0.%’ identified by ‘123’; 
    
    权限 作用对象 归属 密码一个客户端程序使用wordpress用户登陆到10.0.0.51的MySQL后 
    
    1、对t1(wordpress)表的管理能力?
    t1:select ,insert,delete,update all 
    
    所有权限 
    
    2、对t2(wordpress)表的管理能力?
    t2:select,insert,delete,update 
    
    create database wordpress; 
    
    use wordpress; 
    
    create table t1 (id int); 
    
    create table t2 (id int); 
    
    create database blog; 
    
    use blog; 
    
    create table tb1 (id int); 
    
    mysql> show databases; 
    
    +--------------------+ 
    
    | Database | 
    
    +--------------------+ 
    
    | blog | 
    
    | wordpress | 
    
    +--------------------+ 
    
    mysql> show tables from wordpress; 
    
    +---------------------+ 
    
    | Tables_in_wordpress | 
    
    +---------------------+ 
    
    | t1 | 
    
    | t2 | 
    
    +---------------------+ 
    
    mysql> show tables from blog; 
    
    +----------------+ 
    
    | Tables_in_blog | 
    
    +----------------+ 
    
    | tb1 | 
    
    +----------------+ 
    
    1、grant select on *.* to wordpress@’10.0.0.5%’ identified by ‘123’; 
    
    针对wordpress@'10.0.0.5%' 授权 所有库所有表 查询权限 密码是 123 
    
    2、grant insert,delete,update on wordpress.* to wordpress@’10.0.0.5%’ identified by ‘123’; 
    
    针对wordpress@'10.0.0.5%' 授权 插入、删除、修改 wordpress库中的所有表 密码是 123 
    
    3、grant all on wordpress.t1 to wordpress@’10.0.0.5%’ identified by ‘123’; 
    
    针对wordpress@'10.0.0.5%' 授权所有权限 wordpress库中的t1表 密码是123 
    
    [root@db02 ~]# mysql -uwordpress -p123 -h10.0.0.51insert update delete select 
    
    3、对tb1表的管理能力? 
    
    只有select 
    
    
    

    结论:

    1、如果在不同级别都包含某个表的管理能力时,权限是相加关系。 
    
    2、但是我们不推荐在多级别定义重复权限。 
    
    3、最常用的权限设定方式是单库级别授权,即:wordpress.【单库级别】 
    
    
    

    (六)实例

    在企业中,开发让你给他开一个MySQL的用户

    grant insert,delete,update on wordpress.* to wordpress@’10.0.0.5%’ identified by ‘123’; 
    
    1.权限是什么?insert,delete,update 
    
    2.哪个库,哪几张表?哪些列? wordpress.* 
    
    3.你从哪里连接?’10.0.0.5%’ 
    
    4.用户名和密码是什么? 
    
    5.发邮件,走流程
    

    (七).MySQL的连接管理

    mysql 
    
    -u:指定用户 
    
    -p:指定密码 
    
    -P:指定端口 
    
    -S:指定socket文件 
    
    -h:指定主机域 
    
    -e:指定SQL语句 
    

    (八).MySQL的启动方式

    /etc/init.d/mysqld start 
    
    service mysqld start 
    
    systemctl start mysqld 
    
    mysqld_safe --defaults-fifile=/etc/my.cnf & 
    

    (九).MySQL的关闭方式

    /etc/init.d/mysqld stop 
    
    service mysqld stopsystemctl stop mysqld 
    
    mysqladmin -uroot -p123 shutdown 
    
    kill -9 
    
    pkill -9 
    
    killall 
    

    (十)MySQL实例初始化配置

    配置文件读取顺序: 
    
    /etc/my.cnf server_id=1 
    
    /etc/mysql/my.cnf server_id=2 
    
    /application/mysql/my.cnf server_id=3 
    
    ~/.my.cnf server_id=4 
    
    [root@db02 ~]# mysql -uroot -p123 -e "show variables like 'server_id'" 
    
    Warning: Using a password on the command line interface can be insecure. 
    
    +---------------+-------+ 
    
    | Variable_name | Value | 
    
    +---------------+-------+ 
    
    | server_id | 4 | 
    
    +---------------+-------+ 
    
    思考:#cmake: 
    
    socket=/application/mysql/tmp/mysql.sock 
    
    #命令行: 
    
    --socket=/tmp/mysql.sock 
    
    #配置文件: 
    
    /etc/my.cnf中[mysqld]标签下:socket=/opt/mysql.sock 
    
    #default参数: 
    
    --defaults-file=/tmp/a.txt配置文件中
    [mysqld]标签下:socket=/tmp/test.sock 
    
    1./tmp/mysql.sock 
    
    3./tmp/test.sock 
    

    (十一).优先级总结:

    1.命令行优先级最高 
    
    2.--defaults-fifile 
    
    3.配置文件读取顺序反着来 
    
    4.cmake优先级最低 
    

    (十二).mysql配置文件的作用:

    1.影响服务端的启动 
    
    2.影响客户端的连接 
    
  • 相关阅读:
    Javascript本质第二篇:执行上下文
    Javascript本质第一篇:核心概念
    跨线程委托执行
    .NET中STAThread和MTAThread
    用管道实现流的分支
    Async和Await异步编程的原理
    在.NET中使用管道将输出流转换为输入流
    致木兄的一封信
    完整打造一个多功能音乐播放器项目(初步设想跟酷狗类似)
    新冠疫情下各大网站的变化
  • 原文地址:https://www.cnblogs.com/223zhp/p/11905869.html
Copyright © 2011-2022 走看看