美文网首页
二、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基础管理

    1.用户管理 1.1用户的作用: 登录、管理 1.2含义: 用户名@‘白名单’ 1.2.1 用户名: 规范:不要太...

  • MYSQL SQL 语句

    基础sql语句 库管理 表管理 用户管理:

  • SQL语法

    SQL 什么是SQL RDBMS 指的是关系型数据库管理系统。RDBMS 是 SQL 的基础。RDBMS 中的数据...

  • SQL基础教程(第二版)学习笔记

    SQL基础教程(第二版) 1 数据库和SQL 1.1 数据库管理系统 DBMS** 层次数据库 HDB 关系数据库...

  • 第二章 InterSystems SQL基础

    第二章 InterSystems SQL基础 本章概述了InterSystems SQL的特性,特别是那些SQL标...

  • SQL基础(二)

    前言 基础SQL入门详情看SQL(一)多表联接的原理详细看SQL(一) 查询 在SQL中, 最难的莫过于查询.因为...

  • 深入浅出Mysql

    二.sql基础 SQL 语句主要可以划分为以下 3 个类别: DDL(Data Definition Langua...

  • 跟我一起学SQL——SQL基础学习 一

    SQL基础知识 一、SQL对大小写不敏感,即:SELECT=select。 二、每条SQL语句末端使用分号;。 三...

  • sql

    sql-基础sql-基础查询-1sql-基础查询-2sql-更新 概览 数据库(Database,DB):将大量数...

  • 零基础做出第一个PHP网站

    技术背景:无php基础,有sql基础。 动机1:对数据接口的管理是电子文档的管理方式,效率奇低,市面上现有的软件工...

网友评论

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

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