mysql创建存储过程

更改用户host留下的坑

╄→尐↘猪︶ㄣ 提交于 2019-12-16 09:54:18
前言: 我们在创建数据库用户的时候都会指定host,即一个完整的用户可描述为 'username'@'host' 。创建用户时不显式指定host则默认为%,%代表所有ip段都可以使用这个用户,我们也可以指定host为某个ip或ip段,这样会仅允许在指定的ip主机使用该数据库用户。不过你也应该明白 'username'@'%' 和 'username'@'192.168.6.%' 是两个毫无关联的用户,这两个用户可以有不同的密码和权限,这里不建议创建多个同名不同host的用户,还有不要轻易更改用户的host,笔者曾经遇到过因为更改用户host引发的故障,下面将其分享出来,为你讲述前因后果。 1.故障模拟 当时为了规范安全,将某个程序用户的host由%改为了应用服务器ip段,过段时间业务反馈某些功能报错,经排查发现是因为无法调用存储过程(大家可以先思考下原因),下面模拟下故障操作。 # 原有用户、表、存储过程模拟创建 mysql> create user 'testuser'@'%' identified by '123456'; Query OK, 0 rows affected (0.04 sec) mysql> grant select,insert,update,delete,execute on `testdb`.* to 'testuser'@'%'; Query OK,

mysql主从复制原理及实践

时光毁灭记忆、已成空白 提交于 2019-12-15 14:33:34
Mysql主从复制原理及实践 系统小说网 wap.kuwx.net mysql主从框架 MySQL主从架构是MySQL集群中最基本也是最常用的一种架构部署,能够满足很多业务需求,常见的有一主一从或者一主多从。可以防止单一主机的数据丢失,提高数据的安全性,务上可以实现读写分离,可以把一些读操作在从服务器上执行,减小主服务器的负担。 主从复制原理 mysql主从复制是指数据可以从一个mysql服务器节点复制到一台或者多台mysql服务器上,多个从服务器采用异步的方式更新主数据库的变化。MySQL主从同步是基于从库对主库binlog文件的增量订阅来实现,更新的事件类型写入到主库的binlog文件中,日志用于记录所有更新了数据或者已经潜在更新了数据的所有语句,以“事件”的形式保存,它描述数据更改,它是以二进制的形式保存在磁盘中。以.000001的方式结尾,binlog文件大小和数字会不断增加,当mysql重启时,数字会不断递增。 主从复制的原理图: 对于每一个主从连接,都需要三个进程来完成,master(binlog dump thread)、slave(I/O thread 、SQL thread)。 主节点会为每一个当前连接的从节点建一个binary log dump 进程 从节点上执行start slave命令之后,从节点会创建一个I/O线程用来连接主节点,请求主库中更新的bin

MYSQL查看存储过程函数

不羁岁月 提交于 2019-12-15 08:39:49
查询数据库中的存储过程和函数 select `name` from mysql.proc where db = 'xx' and `type` = 'PROCEDURE' //存储过程 select `name` from mysql.proc where db = 'xx' and `type` = 'FUNCTION' //函数 show procedure status; //存储过程 show function status; //函数 查看存储过程或函数的创建代码   show create procedure proc_name;   show create function func_name; 查看视图   SELECT * from information_schema.VIEWS //视图   SELECT * from information_schema.TABLES //表 查看触发器   SHOW TRIGGERS [FROM db_name] [LIKE expr]   SELECT * FROM triggers T WHERE trigger_name=”mytrigger” \G 来源: CSDN 作者: 运维自动化&云计算 链接: https://blog.csdn.net/h106140873/article/details

mysql主从复制原理及实践

北城余情 提交于 2019-12-14 10:58:56
Mysql主从复制原理及实践 mysql主从框架 MySQL主从架构是MySQL集群中最基本也是最常用的一种架构部署,能够满足很多业务需求,常见的有一主一从或者一主多从。可以防止单一主机的数据丢失,提高数据的安全性,务上可以实现读写分离,可以把一些读操作在从服务器上执行,减小主服务器的负担。 主从复制原理 mysql主从复制是指数据可以从一个mysql服务器节点复制到一台或者多台mysql服务器上,多个从服务器采用异步的方式更新主数据库的变化。MySQL主从同步是基于从库对主库binlog文件的增量订阅来实现,更新的事件类型写入到主库的binlog文件中,日志用于记录所有更新了数据或者已经潜在更新了数据的所有语句,以“事件”的形式保存,它描述数据更改,它是以二进制的形式保存在磁盘中。以.000001的方式结尾,binlog文件大小和数字会不断增加,当mysql重启时,数字会不断递增。 主从复制的原理图: 对于每一个主从连接,都需要三个进程来完成,master(binlog dump thread)、slave(I/O thread 、SQL thread)。 主节点会为每一个当前连接的从节点建一个binary log dump 进程 从节点上执行start slave命令之后,从节点会创建一个I/O线程用来连接主节点,请求主库中更新的bin-log。I

3-MySQL DBA笔记-开发基础

五迷三道 提交于 2019-12-13 18:13:04
第二部分 开发篇 本篇首先讲述数据库开发的一些基础知识,如关系数据模型、常用的SQL语法、范式、索引、事务等, 然后介绍编程开发将会涉及的数据库的一些技巧,最后结合生产实际,提供一份开发规范供大家参考。 第3章 开发基础 本章将为读者介绍MySQL数据库相关的开发基础,首先,介绍一些基础概念,然后讲解关系数据模型和SQL基础。 由于在互联网开发者中,PHP开发者占据了相当大的比重,因此这里也将简要介绍下PHP开发者应该掌握的一些基础知识和开发注意事项。 最后,要接触的是MySQL数据库更深层次的内容——索引、主键、字符集等。 3.1 相关基础概念 (1)框架 在软件开发过程中,研发人员经常借助框架(framework)来辅助自己进行软件开发。 成熟的框架可以帮助处理很多细节性的问题,并完成一些基础性的工作,如生成访问数据库的代码、简化网络编程,这样开发者就会有更多的时间和精力专注于业务逻辑的设计。 但目前仍存在的一个问题是,一些框架对于数据库的使用不符合我们的预期,或者说不友好,故而有必要先了解一下开发框架是如何存取数据的。 大家有兴趣的话,可深入学习和使用如下这些业内使用比较广泛的一些框架,如 Django(Python)、Ruby onRails(Ruby)、Zend Framework(PHP)、Spring(JAVA)等。 (2)数据模型 数据模型(data model

mysql数据库

青春壹個敷衍的年華 提交于 2019-12-13 01:13:40
MySQL 数据库的相关概念 一、数据库的好处 1、可以持久化数据到本地 2、结构化查询 二、数据库的常见概念 1、DB:数据库,存储数据的容器 2、DBMS:数据库管理系统,又称为数据库软件或数据库产品,用于创建或管理DB 3、SQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库软件通用的语言 三、数据库存储数据的特点 1、数据存放到表中,然后表再放到库中 2、一个库中可以有多张表,每张表具有唯一的表名用来标识自己 3、表中有一个或多个列,列又称为“字段”,相当于java中“属性” 4、表中的每一行数据,相当于java中“对象” 四、常见的数据库管理系统 mysql、oracle、db2、sqlserver DQL语言 DQL(Data Query Language) 数据查询语言 基础查询 一、语法 select 查询列表 from 表名; 二、特点 查询列表可以是字段、常量、表达式、函数,也可以是多个 查询结果是一个虚拟表 三、示例 1、查询单个字段 select 字段名 from 表名; 2、查询多个字段 select 字段名,字段名 from 表名; 3、查询所有字段 select * from 表名 4、查询常量 select 常量值; 注意:字符型和日期型的常量值必须用单引号引起来,数值型不需要 5、查询函数 select

MySQL 触发器

限于喜欢 提交于 2019-12-11 07:56:10
一、触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。 触发器经常用于加强数据的完整性约束和业务规则等。 触发器创建语法四要素: 1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete) 触发器基本语法如下所示: 其中:trigger_time是触发器的触发事件,可以为before(在检查约束前触发)或after(在检查约束后触发);trigger_event是触发器的触发事件,包括insert、update和delete,需注意对同一个表相同触发时间的相同触发事件,只能定义一个触发器;可以使用old和new来引用触发器中发生变化的记录内容。 触发器SQL语法: [sql] view plain copy create trigger triggerName after/before insert/update/delete on 表名 for each row #这句话在mysql是固定的 begin

mysql 基础操作

孤街醉人 提交于 2019-12-10 23:12:15
1.数据库介绍 - 数据库介绍: 1.随意存放在一个文件中的数据,数据的格式千差万别 tank|123 jason:123 sean~123 2.软件开发目录规范 - Project: - conf - bin - core - db: 存放一个个的文件 1、2都是从本地读取的数据。 3.将所有数据存放到一个第三方的公共位置,同一个软件凡是需要操作数据的,就必须去这个共享的位置操作。 - 第三方的公共位置(数据库) - 数据库集群: 将同一个数据库中的数据,复制到不同的服务器中。 4. MySQL数据: C ---> S架构软件 1) mysql数据库本质上就是一个基于网络通信的软件。 2) 所有基于网络通信的软件,底层都是socket。 - 服务端: - 基于网络通信 - 收发消息 - 客户端: - 基于网络通信 - 收发消息 - 所有语言若想操作数据库,拿到服务端ip和port,都必须遵循一套标准的解析指令 ---》 SQL语句 ***** 学习SQL语句 - DBMS: 数据库管理系统 - 关系型数据库: MySQL、Oracle、DB2、sql server、.... - 1) 表结构 - 需要哪些字段 - 字段是什么类型 - 2) 字段与字段类型 - name ---> 'tank' ----> 字符串 - age ---> 17 ---> 整型 - 非关系型数据库:

mysql存储过程procedure

﹥>﹥吖頭↗ 提交于 2019-12-10 08:26:06
1、 存储过程的概念: 所谓的存储过程就是存储在数据库当中的可以执行特定工作(查询和更新)的一组SQL代码的程序段。 2、 存储过程的优点: (1)存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 (2)当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。 (3)存储过程可以重复使用,可减少数据库开发人员的工作量。 (4)安全性高,可设定只有某些用户才具有对指定存储过程的使用权。 3、 关于 MySQL 的存储过程 存储过程是数据库存储的一个重要的功能,但是 MySQL 在 5.0 以前并不支持存储过程,这使得 MySQL 在应用上大打折扣。好在 MySQL 5.0 终于开始已经支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。 4、 mysql存储过程的创建: 格式: CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body (1)默认地,子程序与当前数据库关联。要明确地把子程序与一个给定数据库关联起来

SOL自定义函数

喜欢而已 提交于 2019-12-10 06:28:31
先介绍下MySQL自带的一些函数: 结构:sql --> 结果 #作用 以下都是运行结果 : 字符串相关函数 select concat ( 'zhou' , 'yi' ) ; -- > zhouyi #字符串链接 select concat_ws ( '&' , zhou '' , 'yi' ) ; -- > zhou & yi #指定分割符号进行字符串链接 # FOMRAT ( N , D , locale ) ; N对象,D小数位数,locale可选 select format ( 2019.011 , 1 ) ; -- > 2019.0 #数字格式化 select lower ( 'ZY' ) ; -- > zy # 转小写 ; upper 转大写 select replace ( 'zhouyibaba' , 'zhouyi' , '' ) ; -- > baba# 替换 SELECT left ( 'chinese' , 4 ) ; -- > chin # 左截取 ; right ( str , len ) 右截取 ; substring指定截取 select length ( 'zhouyi' ) ; -- > 6 # 返回长度 select char_length ( "周毅" ) ; -- > 2 # 如果是length返回 6 select ltrim ( '