MySQL基础管理
1.用户管理
1.用户的作用:
登录;管理相对应的库表
2.定义
定义用户名和白名单
all@'10.0.0.%'
命名用户名时,最好不要太长,要和业务相关
白名单类型:
user@'10.0.0.56'
user@'%'
user@'10.0.0.%' 255.255.255.0 24位
user@'10.0.0.%/255.255.254.0' 23位
user@'10.0.0.5%' 50-59
user@'localhost' 本地
2.用户的相关命令
创建用户
#创建一个oldguo的用户,该用户允许10.0.0.%网段的访问,密码123
create user oldguo@'10.0.0.%' identified by '123';
查询用户
#查询数据库中所有的用户
select user,host from mysql.user;
查询用户的密码
select user,host,authentication_string from mysql.user;
修改用户密码
alter user oldguo@'10.0.0.%' identified by '123456';
删除用户
drop user oldguo@'10.0.0.%'
在8.0版本之前,可以在授权时创建用户,也就是一条命令创建用户并授权,但是在8.0之后,只能是先创建用户在授权。
grant all on *.* to workpress@'%' identified '123' 8.0之后不好使了
3.权限管理
1.MySQL权限列表
查看权限列表: show privileges;
2.授权和回收权限
GRANT 权限 ON 权限作用范围 TO 用户 IDENTIFIED BY '123';
权限范围:
*.* ===》 一般是管理员会设置的方法,所有库下的所有表
oldguo.* ===> 一般是业务用户会设置的方法,某个库下的所有表
oldguo.t1 ===> 一般是业务用户会设置的方法,某个库下的某张表
3.企业授权案例
(1)授权一个管理员用户oldguo,可以从10网段任意地址登录连接管理数据库
GRANT all ON *.* TO oldguo@'10.0.0.%' identified by '123456' with grant option;
(2)授权一个业务用户app,可以从10网段地址访问app库的所有的表
GRANT select,update,insert,delete ON app.* app@'10.0.0.%' IDENTIFIED BY '123456';
(3)授权一个开发用户dev,可以对dev库进行业务的开发
4.查看用户的权限信息
show grant for app@'10.0.0.%';
5.回收权限
reboke 权限 on 库 from 用户;
reboke delete,drop on app.* from app@'10.0.0.%';
注意:数据库的权限并不能通过覆盖式删除命令,数据库授权式相加的,像删除权限,必须执行删除命令。
4.root 管理员密码忘记或被篡改如何处理
--skip-grant-tables #解除用户验证
--skip-networking #禁止tcp连接
1.首先,正常关闭数据库
systemctl stop mysqld
2.启动数据库时加上以上两个参数,使用mysql_safe 启动,并放入后台(类使用Linux系统的单用户模式)
mysql_safe --skip-grant-tables --skip-networking &
3.使用mysql登录数据库
mysql
4.加载授权表
flush privileges;
5.修改数据库登录密码
alter user root@'localhost' identified by '123456';
6.重启数据库到正常模式
systemctl restart mysqld
7.验证数据库密码
mysql -uroot -p123456
5.MySQL的连接管理
1.自带客户端工具
mysql 主要是用来连接用,参数:
-u 用户名
-p 密码
-h ip
-P 端口
-S socket位置
-e 外部执行命令,免交互
< 导入
例子:
(1)TCP连接远程登陆
mysql -uoldguo -p123456 -h 10.0.0.51 -P 3306
(2)socket 连接方式
mysql -uoldguo -p123456 -S /tmp/mysql.sock
(3)免交互,执行命令
mysql -uoldguo -p123456 -e 'show processlist;'
(4)导入数据库
mysql -uroot -p < t100w.sql
数据库内部命令
source /root/world.sql
验证是本地连接还是远程连接
show processlist;
当我们登录MySQL时,既有tcp,又有socket,默认tcp登录
mysqladmin
修改密码
mysqladmin -uroot -p123456 password 123
关闭数据库
mysqladmin -uroot -p123 shutdown
mysqldump
2.第三方开发工具
sqlyog
navicat
workbench 比较重
3.应用程序连接
php-fpm
pip3 install mysql
6.MySQL的启动关闭
数据库初始化完成之后,却启动不了,日志里面没有报错信息,可能是权限不对,可以使用mysqld 前台启动
systemctl ------> mysql.server start ----> mysql_safe -----> mysqld
1. MySQL初始化配置方法
源码安装 初始化配置文件 命令行启动时定制
优先级 命令行启动时定制 > 初始化配置文件 > 源码安装
当我们想测试暂时性测试时,临时性维护,可以采用命令行模式
2.初始化配置文件
查看mysqld 启动时自动加载的配置文件,建议一个mysql实例一个配置文件
mysqld --help --verbose | grep my.cnf
默认mysqld会加载所有的配置文件
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
4. 自定制初始化配置文件设置
vim /opt/a.cnf
############################
[mysqld]
user=mysql
port=3306
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3306
server_id=6
socket=/tmp/a.sock
############################
启动数据库
mysqld --defaults-file=/opt/a.cnf &
连接数据库
mysql -S /tmp/a.sock
7.多实例环境的规划和配置
在分布式架构中应用广泛
多实例端口分别为
3307 3308 3309
1. 端口和目录
mkdir -p /data/mysql/data_{3307,3308,3309}
2. 配置文件准备
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. 授权
chown -R mysql.mysql /data
4.初始化数据
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.启动多实例
mysqld --defaults-file=/data/mysql/my3307.cnf &
mysqld --defaults-file=/data/mysql/my3308.cnf &
mysqld --defaults-file=/data/mysql/my3309.cnf &
netstat -tulnp
6. 使用 systemd 管理多实例
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
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
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
7.测试启动
pkill mysqld
systemctl start mysqld3307
systemctl start mysqld3308
systemctl start mysqld3309
MySQL基础管理的更多相关文章
- 服务管理之mysql基础
目录 mysql基础 1. 关系型数据库介绍 1.1 数据结构模型 1.2 RDBMS专业名词 2. mysql安装与配置 2.1 mysql安装 2.2 mysql配置 3. mysql的程序组成 ...
- MySQL基础普及《MySQL管理之道:性能调优、高可用与监控》
最近工作的内容涉及MySQL运维内容,陆陆续续读了几本相关的书,其中一本是<MySQL管理之道:性能调优.高可用与监控>. 内容涵盖性能调优(包括sql优化等).备份.高可用,以及读写分离 ...
- MySQL基础知识:启动管理和账号管理
整理.记录常用的MySQL基础知识:时间久了,很多就忘记了. 操作系统环境为MacOS Catalina, MySQL版本为: 8.0.13 MySQL Community Server - GPL. ...
- Mysql基础代码(不断完善中)
Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...
- MYSQL基础操作
MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...
- MySQL基础(非常全)
MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...
- mysql 基础篇5(mysql语法---数据)
6 增删改数据 -- ********一.增删改数据********* --- -- 1.1 增加数据 -- 插入所有字段.一定依次按顺序插入 INSERT INTO student VALUES(1 ...
- MySQL基础学习总结
1.MySQL基础概念 mysql逻辑架构如下: 每个客户端连接都会在服务器中拥有一个线程,这个连接的查询只会在这个单独的线程中执行. MySQL是分层的架构.上层是服务器层的服务和查询执行引擎,下层 ...
- MySQL日志管理
MySQL日志管理 2013年09月26日 ⁄ MySQL ⁄ 共 14266字 ⁄ 评论数 ⁄ 被围观 , views+ 一.日志类型: MySQL有几个不同的日志文件,可以帮助你找出mysqld内 ...
随机推荐
- Linux命令篇-服务器查看日志(续)
此文是继上文如何在服务器看日志的续集.之所以我觉得自己很菜,是因为我的周围都是大佬,他们都是值得我学习的对象. 通常大家看日志,无非两种,一是more命令,一是tail命令,其中的过程要么是翻页查看, ...
- Framework7-Vue的UI组件代码
Framework7-Vue提供了一套UI组件库,想要什么效果,直接到上面复制代码即可 http://www.framework7.cn/ 这里有非常多的ui组件,基本上可以满足项目中的大部分需求 h ...
- word文档操作
1.如何把word文档修改的地方标记出来 : https://zhidao.baidu.com/question/73648149.html 2.word 的几种 视图:https://zhid ...
- jmeter登录之-动态参数
jmeter登录之-动态参数 1.抓包查看提交的登录参数 发现参数authenticity_token是动态的,每次都不一样,所以回放的时候就会失败 2.提取动态变化的参数-后置处理器(相当于LR的关 ...
- flink收藏博客
1.https://blog.csdn.net/liguohuabigdata/article/category/7279020 2.http://wuchong.me 3.https://www.j ...
- MySQL数据库(五)—— 用户管理、pymysql模块
用户权限管理.pymysql模块 一.用户管理(权限管理) 在MySQL中自带的mysql数据库中有4个表用于用户管理的 # 优先级从高到低 user > db > tables_priv ...
- 7_springboot2.x开发热部署
概述:在开发中我们修改一个Java文件后想看到效果不得不重启应用,这导致大量时间花费,我们希望不重启应用的情况下,程序可以自动部署(热部署).有以下四种情况,如何能实现热部署. 1.模板引擎 在Spr ...
- Codeforces Round #527 F - Tree with Maximum Cost /// 树形DP
题目大意: 给定一棵树 每个点都有点权 每条边的长度都为1 树上一点到另一点的距离为最短路经过的边的长度总和 树上一点到另一点的花费为距离乘另一点的点权 选定一点出发 使得其他点到该点的花费总和是最大 ...
- 【POJ】1287 Networking
题目链接:http://poj.org/problem?id=1287 题意:n个点,m条网线长度.求构成网络的最小网线长度. 题解:最小生成树裸题.套板子. 代码: #include<iost ...
- ArcGis面要素空间连接,取相交面积最大者 C#
核心代码: #region JoinWork_IntersectMax private void CreateNewFields_IntersectMax(IFeatureClass destFeat ...