MySQL管理基础
#1、数据库连接管理
mysql命令说明
第一个功能:连接数据库(在前面mysql命令的使用里面讲解了,这里就不讲解了)
第二个功能:mysql客户端自带的命令功能
mysql命令的使用(mysql --help)
选项:
-u 用户名
-p 密码
-P 端口号(默认3306) -h mysql的连接IP地址
-S 后接socket文件存放位置【可以本地登录的方式;(相当于:mysql -uroot -p -S /tmp/sock.mysql) 】
-e 免交互执行mysql命令(eg:mysql -uroot -p -e "show databases;")
< 导入SQL文件到mysql中(mysql -uroot -p < /tmp/world.sql)
--protocol=
--help
--version
####补充说明:如果使用了-h 参数和-S参数的话,即默认使用-h参数(即使用TCP/IP连接)
举例:
No1: mysql
No2:本地Socket连接方式 mysql -uroot -p123 [-S xzxzxz]
No3:应用远程连接:(完整的tcp/ip的连接串模式,是通用的连接方式) mysql -uroot -p123 -h 10.0.0.51 -P 3306
# mysql客户端自带的命令参数讲解
help (\h) 帮助信息
? (\?) 相当于help clear (\c) 相当于Ctrl + c,结束当前命令的运行 connect (\r)
delimiter (\d)
edit (\e) ego (\G) 把查询的数据结构化为键值对的模式(select * from mysql.user\G;) exit (\q) 退出数据库
quit (\q) 退出数据库 go (\g)
nopager (\n)
notee (\t)
pager (\P)
print (\p)
prompt (\R)
rehash (\#)
source (\.) 运行SQL脚本文件(source /root/world.sql)
status (\s)
system (\!) 在mysql里面运行一个Linux操作系统命令(system ls)
tee (\T) 开一个日志文件,保存以后的操作日志(tee /tmp/sql.log)
use (\u) 切换到指定的数据库(use world)
charset (\C)
warnings (\W)
nowarning (\w)
mysql参数详解
mysqladmin命令说明
查看帮助文档:mysqladmin --help
参数说明(和mysql命令参数基本上差不多):
-u -p -S -h -P
常用参数:
mysqladmin -uroot -p password 123 # 修改密码
Enter password:
mysqladmin -uroot -p shutdown # 停止mysql服务
#2、用户管理
1)用户的作用
(1)登录mysql数据库
(2)管理数据库对象(库/表)
2)用户的定义
(1)格式:'username'@'主机域'
主机域格式:
'10.0.0.51'
'10.0.0.5%'
'10.0.0.%'
'%'
'10.0.0.0/255.255.255.0'
'db01'
说明:还可以使用iptables来控制访问
*************************************************************************
# 创建用户
mysql> create user oldguo@'10.0.0.%' identified by 'XXX';
帮助文档查看
mysql> help create user;
# 删除用户
mysql> drop user oldguo@'10.0.0.%';
# 查询用户
mysql> select user,host,password from mysql.user; --> 适用于5.7版本及其以下版本
# 设置(修改)用户密码
mysql>set password for oldguo@'10.0.0.%'=PASSWORD('YYY');
补明:在MySQL5.8版本以后,不支持以下命令
grant all no 库名.表名 to '用户名'@'主机域' identified by '密码'; ---> 错误语句 ,5.8版本以后不支持在用户授权的时候创建用户和设置密码
# 一、刚装完mysql数据库该做的事情
# No1:设定初始密码(root@localhost)
mysqladmin -uroot -p password 'XXX'
Enter password: ----> 默认的初始密码不存在
Warning: Using a password on the command line interface can be insecure.
--> 密码显示再屏幕上面,不安全
# No2:使用密码登录
mysql -uroot -pXXX
# No3:清理无效用户
mysql> select user,host,password from mysql.user;
mysql> drop user root@'db01';
【说明:没有用户名的和没有密码的都是有安全隐患的用户,我们需要清理掉】
# No4:查看用户属性
mysql> select * from mysql.user \G;
# 二、 用户的创建、查看、删除
# 三、修改用户密码
# No1: 修改用户密码
set password for 用户名@'10.0.0.%'=PASSWORD('YYY');
# No2:推荐使用grant(重点记忆)
# No3:忘记密码才会使用以下命令修改
5.6和5.6以前的版本:
update user set password=PASSWORD('XXX') where user='root' and host='localhost';
flush privileges;
5.7版本的话,
update mysql.user set authentication_string=PASSWORD('XXX') where='test' and host='10.0.0.%';
#3、权限管理(授权|回收|查看|)
权限说明
# 作用对象: 库、表
# 权限命令:
GRANT SELECT INSERT, 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 、revoke 命令
授权命令
grant 权限 on 库名.表名 to 用户名@'主机域' identified by '密码';
***************************************************************
No1:适合版本在5.8以下才能够使用上面的命令
如果版本是5.8及其以上的话,在授权的时候,必须要先创建用户;且在授权的时候不能设置密码
No2:作用对象分析
权限: 就是上面说的权限命令,也可以使用ALL来代替所有权限命令
且权限命令不包括grant和revoke 命令
在工作当中,给员工的一个普通用户,里面最多只能包含insert 、select 、update
库名.表名:
*.* 指当前mysql数据中所有的库下的所有表(全局库)
wordpress.* 指当前mysql数据中wordpress库下的所有表(单库级别)
wordpress.t1 指当前mysql数据中wordpress库下的t1表(单表级别)
***************************************************************
用户权限查看
show grants from 用户名@'主机域';
示列:show grants for wordpress@'10.0.0.%';
用户权限回收
revoke 权限 on 库名.表名 from 用户名@'主机域';
示列:revoke all on wordpress.* from wordpress@'10.0.0.%';
案例1:用户权限查看案例
如果是普通用户:
show grants from 用户名@'主机域';
示列:show grants for wordpress@'10.0.0.%';
如果是管理员账户:
第一步:查看权限
show grants for admin@'%';
第二步:如果第一步查看不出来的话,执行第二步(删除某一个权限)
revoke select on *.* from admin@'%';
第三步:再次查看权限
show grants for admin@'10.0.0.%';
第四步:把第二步删除的权限设置回来
[说明:在显示里面的权限加上select就是ALL所有的权限]
案例2:用户权限开通案例
需求:
1.开一个管理员用户admin,能通过10.0.0.%这个网段管理mysql (WITH GRANT OPTION )
mysql> grant all on *.* to admin@'10.0.0.%' identified by '123' with grant option; 2.开一个应用用户app,能通过10.0.0.%这个网段对app库下所有表进行SELECT,INSERT, UPDATE, DELETE
mysql> grant SELECT,INSERT, UPDATE, DELETE on app.* to app@'10.0.0.%' identified by '123'; # 补充说明:
账号开好了,我们需要先进行测试,再拿给相应的工作人员使用
测试方法:使用我们刚才创建的用户进行登录测试:
mysql -uadmin -h 10.0.0.51 -p123
补充说明:我们还需要在/etc/my.cnf配置文件里的[mysqld]模块里添加skip_name_resolve模块,(作用是禁止域名解析)重启数据库,进行上面的命令测试
案例3:企业权限管理案例
开发人员说:请给我开(授权)一个用户
解决思路:根据授权命令来解决
grant 权限 on 库名.表名 to 用户名@'主机域' identified by '密码';
询问内容?
No1:权限范围,你需要做什么?
No2:你需要对哪些库或者表做开发操作?
No3:登录地址范围:你从哪里连接过来?
No4:用户名有没有要求没有?
No5:你的密码设置为什么?(密码设置最好安全一点)
最后补充一句:密码请妥善保管,千万不要示意他人或在公共场合使用
#4、mysql启动 | 关闭
启动流程
# 启动文件说明:
mysql.server: 是mysql的启动的二进制文件,相当于/etc/init.d/ 下面的配置文件
mysql_safe: 也是mysql服务的启动文件,它是在启动mysql.server之后,会被引导启动的文件,它后面可以接一些启动参数
mysqld : 是mysql的服务的守护进程
# MySQL的启动流程:(☆☆☆☆☆)
最先启动 再次启动 最后生成
mysql.server start mysql_safe & mysqld守护进程
启动
使用mysql.server 启动 /etc/init.d/mysqld start
使用mysqld_safe启动 mysqld_safe --skip-grant-tables --skip-networking &
关闭
方法一: /etc/init.d/mysqld stop
方法二: mysqladmin -uroot -p123 [-h 10.0.0.51] shutdown
方法三:利用以下系统进程管理命令关闭MySQL 【kill -9 进程号】(最好不要使用)
kill pid pid为数据库服务对应的进程号
killall mysqld mysqld是数据库服务对应的进程名字
pkill mysqld mysqld是数据库服务对应的进程名字
案例分享
http://oldboy.blog.51cto.com/2561410/1431161
http://oldboy.blog.51cto.com/2561410/1431172
#5、初始化配置实例
配置文件启动优先级
目的:为了能够让mysql,按照我们管理员的思维启动和运行,方便后期维护。
#(1) 预编译的时候修改(A)
cmake时指定参数,一般建议修改一些不会经常变化的参数 #(2) 初始化配置文件 (B)
MySQL配置文件加载顺序
命令:mysqld --help --verbose |grep my.cnf
/etc/my.cnf [如果是单实例的话,规范是把配置信息添加到该配置文件里面]
/etc/mysql/my.cnf
?etc/my.cnf.d/ ----> MySQL5.7里面默认存在
/application/mysql-5.6.38/etc/my.cnf
~/.my.cnf
补充说明:
mysqld_safe --defaults-file=/tmp/my3306.cnf
# 说明:如果使用./bin/mysqld_safe 守护进程启动mysql数据库时,使用了 --defaults-file=<配置文件的绝对路径>参数,这时只会使用这个参数指定的配置文件,其他配置文件将失效。 件,其他配置文件将失效。 #(3) 使用命令行参数,干预mysql启动(C)
eg: mysql_safe --socket=/tmp/mysql.sock --port=8806 &
总结:配置文件读取优先级
在正常的情况下,配置文件的优先级是: C > B > A (优先级高的后读取,会覆盖前面的配置文件),如果一旦使用了--defaults-file=/PATH 参数的话,那么该参数对应路径文件优先级最高,其他配置文件将失效。
配置文件结构、模板(单实例)
说明:这里拿/etc/my.cnf来说明,具体配置文件位置需要看程序读取配置文件的优先级;
# 配置文件结构
[标签1]
a=XXX
[标签2]
b=YYY # 标签的分类
服务器标签:(影响了数据库的启动)
[server]
[mysqld]
[mysql_safe]
客户端标签:(作用:影响了本地客户端的连接)
[client]
[mysql]
[mysqladmin]
[Mysqldump] # 配置文件模板
vim /etc/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/application/mysql/data
socket=/application/mysql/tmp/mysql.sock
port=3306
log_error=/var/log/mysql.log # 日志路径
server_id=6 # 实例的ID
skip_name_resolve # 禁止域名解析
[mysql]
user=root
password=123
socket=/application/mysql/tmp/mysql.sock
prompt=\\ oldguo [\\d]> # mysql客户端的命令提示符 #提示说明:
修改了配置文件,需要重启才能生效: /etc/init.d/mysqld restart
多实例配置
多实例是什么意思?
实际上就是在一台高性能服务器上配置多个数据库管理系统,以来提高服务器的性能
怎么配置多实例?
配置多实例就和配置Tomcat多实例一样,需要软件部分实例和数据部分实例
软件部分:编写配置文件(多port、多socket、多日志、多server_id....)
数据部分:初始化多套数据
# 多实例(3个)配置过程:
第一步:创建多个专用目录
mkdir /data/330{7..9}/data -p
第二步:准备多个配置文件
vim /data/3307/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
port=3307
log-error=/data/3307/mysql.log
skip-name-resolve
server-id=7 --------------------------
vim /data/3308/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/data/3308/data
port=3308
socket=/data/3308/mysql.sock
log-error=/data/3308/mysql.log
skip-name-resolve
server-id=8 ------------------
vim /data/3309/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/data/3309/data
socket=/data/3309/mysql.sock
port=3309
log-error=/data/3309/mysql.log
skip-name-resolve
server-id=9 第三步:初始化多次数据库
初始化三套数据:
/application/mysql/scripts/mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/data/3307/data
/application/mysql/scripts/mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/data/3308/data
/application/mysql/scripts/mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/data/3309/data 第四步:修改权限
touch /data/330{7..9}/mysql.log
chown -R mysql.mysql /data/330* 第五步:启动数据库
/application/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnf &
/application/mysql/bin/mysqld_safe --defaults-file=/data/3308/my.cnf &
/application/mysql/bin/mysqld_safe --defaults-file=/data/3309/my.cnf & 第六步:验证、连接测试
验证:
netstat -lnp|grep 330
连接测试:
mysql -S /data/3307/mysql.sock -e "show variables like 'server_id'"
mysql -S /data/3308/mysql.sock -e "show variables like 'server_id'"
mysql -S /data/3309/mysql.sock -e "show variables like 'server_id'"
第七步:启动数据库多实例
方法一是使用socket连接启动;
方法二是使用TCP/IP连接启动 第八步:关闭数据库多实例
mysqladmin -S /data/3307/mysql.sock shutdown
mysqladmin -S /data/3308/mysql.sock shutdown
mysqladmin -S /data/3309/mysql.sock shutdown
MySQL管理基础的更多相关文章
- MySQL基础普及《MySQL管理之道:性能调优、高可用与监控》
最近工作的内容涉及MySQL运维内容,陆陆续续读了几本相关的书,其中一本是<MySQL管理之道:性能调优.高可用与监控>. 内容涵盖性能调优(包括sql优化等).备份.高可用,以及读写分离 ...
- Database基础(四):密码恢复及设置、 用户授权及撤销、数据备份与恢复、MySQL管理工具
一.密码恢复及设置 目标: 本案例要求熟悉MySQL管理密码的控制,完成以下任务操作: 练习重置MySQL管理密码的操作 通过正常途径设置MySQL数据库的管理密码 步骤: 步骤一:重置MySQL管理 ...
- 使用mysql管理meta
第一部分 安装mysql 第二部分 使用mysql管理meta 安装mysql 安装 yum -y install mysql mysql-server yum方法安装需要使用网络:可以自动续传:对于 ...
- MySQL数据库基础
MySQL数据库基础 本文的所有操作是基于CMD环境,MySQL通过在命令行中输入SQL语句对数据库进行操作.配置问题可参考<打通MySQL的操作权限>中的内容,该文算是针对前期的环境配置 ...
- 【笔记】MySQL的基础学习
[笔记]MySQL的基础学习 老男孩 MySQL 一 安装与配置 1 下载安装 官网:http://dev.mysql.com/downloads/mysql/ 下载相应版本的压缩包 解压压缩包至任 ...
- 高性能MySQL之基础架构
一.背景 为什么我们需要先学习MYSQL的基础架构先呢? 原因很简单,当我们需要了解一件事物的时候,我们只有站在宏观的层面,才能层层剥丝抽茧的去理解问题.举个例子,我们要看一个框架的源码,一开始就想进 ...
- php面试专题---15、MySQL数据库基础考察点
php面试专题---15.MySQL数据库基础考察点 一.总结 一句话总结: 注意:只写精品 1.mysql定义int(3),那么我存1234就错了么? 不是:无影响:只会影响显示字符的个数:可以为整 ...
- MySQL数据库--基础简述
MySQL数据库--基础简述 1.15.1 MySQL简介 Mysql是最流行的RDBMS(Relational Database Management System:关系数据库管理系统),特别是在W ...
- MySQL数据库基础知识及优化
MySQL数据库基础知识及优化必会的知识点,你掌握了多少? 推荐阅读: 这些必会的计算机网络知识点你都掌握了吗 关于数据库事务和锁的必会知识点,你掌握了多少? 关于数据库索引,必须掌握的知识点 目录 ...
随机推荐
- MySQL(13)---MYSQL主从复制原理
MYSQL主从复制原理 最近在做项目的时候,因为部署了 MYSQL主从复制 所以在这里记录下整个过程.这里一共会分两篇博客来写: 1.Mysql主从复制原理 2.docker部署Mysql主从复制实战 ...
- Python爬虫实战案例:取喜马拉雅音频数据详解
前言 喜马拉雅是专业的音频分享平台,汇集了有声小说,有声读物,有声书,FM电台,儿童睡前故事,相声小品,鬼故事等数亿条音频,我最喜欢听民间故事和德云社相声集,你呢? 今天带大家爬取喜马拉雅音频数据,一 ...
- ERP费用报销操作与设计--开源软件诞生31
赤龙ERP费用报销讲解--第31篇 用日志记录"开源软件"的诞生 [进入地址 点亮星星]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/redra ...
- moviepy音视频剪辑:使用fl_time进行时间特效处理报错OSError: Error in file xxxx, Accessing time
☞ ░ 前往老猿Python博文目录 ░ 老猿在使用moviepy音视频剪辑的fl_time进行时间特效处理时,系统报错: OSError: Error in file F:\video\WinBas ...
- XSS漏洞防御之HttpOnly
WWW服务依赖于Http协议实现,Http是无状态的协议,所以为了在各个会话之间传递信息,就需要使用Cookie来标记访问者的状态,以便服务器端识别用户信息. Cookie分为内存Cookie和硬盘C ...
- 项目测试环境自动化部署[jenkins前后端配置、Nginx配置]
持续部署:关注点在于项目功能部署到服务器后可以正常运行,为下一步测试环节或最终用户正式使用做准备.(问题点:一个环节有问题,其他环节跟着有问题) 持续集成:关注点是在于尽早发现项目整体运行问题,尽早解 ...
- leetcode——(四)2020.06.08
新的一周,leetcode计划:78,79,98,102,236,124,128 (23)
- .NET Core集成SkyWalking+SkyAPM-dotne实现分布式链路追踪
.NET Core集成SkyWalking+SkyAPM-dotnet实现分布式链路追踪 SkyWalking是一款APM(应用性能管理),其他的还有Cat.Zipkin.Pinpoint等. 随着微 ...
- Fabric v2.0中的隐私数据
文章来源于https://hyperledger-fabric.readthedocs.io/en/release-2.0/ 私有数据集在v1.4中提出,一直使用的是隐私数据集方式,即建立一个隐私数据 ...
- linux 上安装部署python
一般在linux中使用python 需要安装pyenv 进行版本控制 因为linux6.9自带的Python是2.6的 同时很多命令都是基于2.6开发的 所以系统环境不能改 我们要开发 只能用pyen ...