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数据库基础知识及优化必会的知识点,你掌握了多少? 推荐阅读: 这些必会的计算机网络知识点你都掌握了吗 关于数据库事务和锁的必会知识点,你掌握了多少? 关于数据库索引,必须掌握的知识点 目录 ...
随机推荐
- jmeter测试udp
jemter本身不支持udp测试,需要下载安装第三方插件,或者下载一个插件管理器(下面那个蝴蝶一样的图标),里面有各种插件可以供你下载 下载链接:https://jmeter-plugins.org/ ...
- 如何获取公网IP的mac地址
如何获取远程IP的mac地址 思路分析 由于java本身没有相关的jar包进行获取,所以这里介绍从其他的方面进行入手和实践 使用的工具对比: tcpdump tshark pcap4j 都可以达到抓包 ...
- Educational Codeforces Round 92 (Rated for Div. 2) B、C题解
TAT 第一场codeforces B. Array Walk #暴力 #贪心 题目链接 题意 有\(a1, a2, ..., an\) 个格子(每个格子有各自分数),最初为1号格(初始分数为\(a1 ...
- Java基础教程——类和对象
视屏讲解:https://www.bilibili.com/video/av48272174 面向过程 VS 面向对象 面向过程:强调步骤. 面向对象:强调对象. 面向对象的特点就是:隐藏具体实现的细 ...
- redis面试问题(二)
1.redis和其他缓存相比有哪些优点呢 见上一篇 2. 你刚刚提到了持久化,能重点介绍一下么 见上一篇 3.Redis中对于IO的控制做过什么优化? pipeline? 4 有没有尝试进行多机red ...
- Fiddler 4 (过滤器的使用)
1.先找到过滤器并且勾选 2.勾选 并填写要过滤的地址 3.运行 最终效果如下
- 从JMM透析volatile与synchronized原理,图文并茂
在面试.并发编程.一些开源框架中总是会遇到 volatile 与 synchronized .synchronized 如何保证并发安全?volatile 语义的内存可见性指的是什么?这其中又跟 JM ...
- 第15.28节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTableWidget详解
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 表格部件为应用程序提供标准的表格显示工具,在表格内可以管理基于行和列的数据项,表格中的最大 ...
- PyQt(Python+Qt)学习随笔:树型部件QTreeWidget中使用findItems搜索项
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在QTreeWidget类实例的树型部件中,可以根据文本.搜索列以及匹配模式来搜索满足条件的项,调用 ...
- centos 7系统,解决python3.x 安装后使用yum不能安装的问题(错误:urlgrabber-ext-down | KeyboardInterrupt)
1.在安装python3.xx版本后,通过yum去安装软件会出现问题,目前我遇到的有2种问题 比如显示:urlgrabber-ext-down Downloading packages: File & ...