美文网首页
二、SQL基础管理

二、SQL基础管理

作者: Gq赵 | 来源:发表于2019-12-17 20:43 被阅读0次

    1.用户管理

    1.1用户的作用:

    登录、管理

    1.2含义:

    用户名@‘白名单’

    1.2.1 用户名:

    规范:不要太长、要和业务有关

    1.2.2 白名单

    网络范围

    user@'10.0.0.56'
    user@'%'
    user@'10.0.0.%'   255.255.255.0   24位
    user@'10.0.0.0/255.255.254.0'      23位
    user@'10.0.0.5%'    50-59
    user@'localhost'  本地
    

    常用

    user@'10.0.0.%'
    user@'10.0.0.0/255.255.254.0' 
    user@'10.0.0.5%'    50-59
    user@'localhost'  本地
    
    1.2.3 用户管理

    创建用户: create user +用户名,网络范围 密码

    mysql> create user zhao@'10.0.0.%' identified by '123';
    

    查询用户

    mysql> select user,host from mysql.user;
    

    修改用户密码:

    mysql> alter user zhao@'localhost'  identified by '123';
    

    删除用户:

    mysql> drop user zhao@'10.0.0.%';
    

    说明:
    8.0+ 版本: 必须先创建用户再授权.
    8.0以前: 可以grant 授权时自动创建用户。


    2.权限管理

    2.1查看可以设定的所有权限列表

    mysql> show privileges;

    2.2 授权和回收权限

    GRANT 权限 ON 权限作用范围 TO 用户 IDENTIFIED BY '123' with grant option;



    权限作用范围:

    *.*       ====>  一般是管理员会设置的方法
    oldguo.*  ====>  一般是业务用户会设置的方法
    oldguo.t1 ====>  一般是业务用户户设置的方法     
    
    2.3企业授权案例
    1. 授权一个管理员用户oldguo,可以以从10网段任意地址登录管理数据库
    mysql> GRANT  all   ON *.*    TO oldguo@'10.0.0.%'   IDENTIFIED BY '123'  with grant option;
    关闭验证连接模块,直接无密码登录。关闭tcp连接
    
    1. 授权一个业务用户 www ,可以从10网段地址访问app库的所有表
    mysql> grant select,update,insert,delete ON app.* TO app@'10.0.0.%'   IDENTIFIED BY '123' ;
    
    2.4 root管理员密码忘记或被篡改如何处理?

    (1) 关闭数据库,启动到"单用户"模式

    [root@db01 data_3306]# systemctl stop mysqld
    [root@db01 data_3306]# mysqld_safe  --skip-grant-tables  --skip-networking  &
    跳过grant-tables验证模块,和TCP连接。无密码登录。
    

    (2) 无密码登录MySQL

    [root@db01 data_3306]# mysql
    mysql> flush privileges;
    mysql> alter user root@'localhost' identified by '123456';
    

    (3) 重启数据库到正常模式

    [root@db01 data_3306]# systemctl restart mysqld
    
    2.5 查询用户权限
    mysql> show grants for app@'10.0.0.%';
    
    2.6 回收权限
    mysql> revoke delete,drop on app.* from 'app'@'10.0.0.%';
    

    3. MYSQL 的连接管理

    3.1 自带客户端工具

    3.1.1 mysql

    -u 用户名
    -p 密码
    -h IP
    -P 端口
    -S socket位置
    -e 免交互
    < 导入SQL脚本
    例子:

    (1) TCP连接串远程登录

    注:需要提前创建好远程用户

    mysql> grant all on *.* to oldguo@'10.0.0.%' identified by '123';
    [root@db01 data_3306]# mysql -uroot -p -h 10.0.0.51 -P 3306
    
    (2) Socket连接方式

    注:需要提前创建好localhost用户

    mysql> grant all on *.* to oldguo@'localhost' identified by '123';
    [root@db01 data_3306]# mysql -uoldguo -p -S /tmp/mysql.sock 
    Enter password: 
    

    mysql> show processlist; #查看用户是远程或本地登录

    (3) 免交互执行命令操作数据库 -e
    [root@db01 ~]# mysql -uroot -p -e "show processlist"
    
    (4) 导入SQL脚本

    两种方式

    [root@db01 ~]# mysql -uroot -p < t100w.sql
    Enter password: 
    mysql> source /root/world.sql
    

    3.1.2 mysqladmin

    mysqladmin是一个执行管理操作的客户端程序。它可以用来检查服务器的配置和当前状态、创建和删除数据库等。

    (1) 修改密码
    [root@db01 ~]# mysqladmin -uroot -p123456 password 123
    [root@db01 ~]# mysql -uroot -p123
    
    (2) 关闭数据库
    [root@db01 ~]# mysqladmin -uroot -p123  shutdown 
    

    mysqldump(备份恢复)

    3.2第三方开发工具
    sqlyog 
    navicat
    workbench
    
    3.3 应用程序连接

    php-mysql
    pip3 install mysql
    jar
    go


    4. MySQL的启动关闭

    systemctl ---> mysql.server start -----> mysqld_safe ----> mysqld


    5.MySQL的初始化配置

    5.1 初始化配置方法

    源码安装定制 < 初始化配置文件 < 命令行启动时定制

    5.2 初始化配置文件

    一个MySQL实例一个配置文件,避免影响服务运行。

    [root@db01 data_3306]# mysqld --help --verbose |grep my.cnf
    /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 
    

    5.3配置文件书写格式

    [root@db01 data_3306]# cat /etc/my.cnf
    [mysqld]
    user=mysql
    port=3306
    basedir=/usr/local/mysql57
    datadir=/data/mysql/data_3306
    server_id=6
    socket=/tmp/mysql.sock
    [mysql]
    socket=/tmp/mysql.sock

    标签项 ====> [mysqld]
    服务器端 [server]: [mysqld],[mysqld_safe] ====> 影响到MySQL启动
    客户端 [clinet] : [mysql] ,[mysqldump] ====> 影响本地客户端程序

    配置项 ====> key=value

    5.4 自定制初识化配置文件位置

    mysqld --defaults-file=/opt/a.cnf &、


    6. 多实例的规划和配置,一台服务器运行4个MySQL服务

    端口分别为 3307、3308、3309
    分布式架构中应用广泛
    1). 准备端口和目录

    [root@db01 ~]# rm -rf /data/mysql/data_{3307,3308,3309}
    [root@db01 ~]# mkdir -p /data/mysql/data_{3307,3308,3309} 
    
    1. 配置文件准备
    cat > /data/mysql/my3307.cnf <<EOF
    [mysqld]
    user=mysql
    port=3307
    basedir=/usr/local/mysql57
    datadir=/data/mysql/data_3307
    server_id=7
    socket=/tmp/mysql3307.sock
    EOF
    
    cat > /data/mysql/my3308.cnf <<EOF
    [mysqld]
    user=mysql
    port=3308
    basedir=/usr/local/mysql57
    datadir=/data/mysql/data_3308
    server_id=8
    socket=/tmp/mysql3308.sock
    EOF
    
    cat > /data/mysql/my3309.cnf <<EOF
    [mysqld]
    user=mysql
    port=3309
    basedir=/usr/local/mysql57
    datadir=/data/mysql/data_3309
    server_id=9
    socket=/tmp/mysql3309.sock
    EOF
    

    3). 授权

    [root@db01 ~]# chown -R mysql.mysql /data/
    

    4). 初始化数据

    [root@db01 ~]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57 --datadir=/data/mysql/data_3307
    mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57 --datadir=/data/mysql/data_3308
    mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57 --datadir=/data/mysql/data_3309
    

    5). 启动多实例

    [root@db01 mysql]# mysqld --defaults-file=/data/mysql/my3307.cnf &
    [root@db01 mysql]# mysqld --defaults-file=/data/mysql/my3308.cnf &
    [root@db01 mysql]# mysqld --defaults-file=/data/mysql/my3309.cnf &
    [root@db01 mysql]# netstat -tulnp
    

    6). 使用 systemd 管理多实例
    3307端口

    cat >/etc/systemd/system/mysqld3307.service <<EOF
    [Unit]
    Description=MySQL Server
    Documentation=man:mysqld(8)
    Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
    After=network.target
    After=syslog.target
    [Install]
    WantedBy=multi-user.target
    [Service]
    User=mysql
    Group=mysql
    ExecStart=/usr/local/mysql57/bin/mysqld --defaults-file=/data/mysql/my3307.cnf
    LimitNOFILE = 5000
    EOF
    

    3308端口

    cat >/etc/systemd/system/mysqld3308.service <<EOF
    [Unit]
    Description=MySQL Server
    Documentation=man:mysqld(8)
    Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
    After=network.target
    After=syslog.target
    [Install]
    WantedBy=multi-user.target
    [Service]
    User=mysql
    Group=mysql
    ExecStart=/usr/local/mysql57/bin/mysqld --defaults-file=/data/mysql/my3308.cnf
    LimitNOFILE = 5000
    EOF
    

    3309端口

    cat >/etc/systemd/system/mysqld3309.service <<EOF
    [Unit]
    Description=MySQL Server
    Documentation=man:mysqld(8)
    Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
    After=network.target
    After=syslog.target
    [Install]
    WantedBy=multi-user.target
    [Service]
    User=mysql
    Group=mysql
    ExecStart=/usr/local/mysql57/bin/mysqld --defaults-file=/data/mysql/my3309.cnf
    LimitNOFILE = 5000
    EOF
    

    以上操作完成,即可启动服务。

    [root@db01 ~]# pkill mysqld 
    [root@db01 ~]# systemctl restart mysqld 
    [root@db01 ~]# systemctl start mysqld3307
    [root@db01 ~]# systemctl start mysqld3308
    [root@db01 ~]# systemctl start mysqld3309
    

    查看端口


    相关文章

      网友评论

          本文标题:二、SQL基础管理

          本文链接:https://www.haomeiwen.com/subject/vitsnctx.html