MySQL数据库安全秘籍之守护数据金库防火防盗防攻击

目录
  • 一、简介
    • 1.1 为什么MySQL安全很重要
    • 1.2 MySQL安全的威胁
  • 二、配置安全性
    • 2.1 基本配置
    • 2.2 安全连接
    • 2.3 加密
    • 2.4 身份验证
    • 2.5 日志记录
  • 三、用户管理
    • 3.1 用户权限
      • 3.1.1 MySQL的权限管理架构
      • 3.1.2 授予和收回用户权限的命令
      • 3.1.3 限制用户只能访问特定表
    • 3.2 用户口令
      • 3.2.1 MySQL口令策略
      • 3.2.2 加强MySQL口令策略的措施
    • 3.3 改善口令
      • 3.3.1 密码加密方式
      • 3.3.2 定期修改密码
    • 3.4 用户角色
      • 3.4.1 用户角色的定义与作用
      • 3.4.2 如何创建用户角色
    • 3.5 使用SSL证书
      • 3.5.1 SSL证书的作用
      • 3.5.2 使用SSL证书加密MySQL连接
  • 四、数据加密
    • 4.1 存储过程加密
    • 4.2 数据加密算法
    • 4.3 数据传输加密
  • 五、防止网络攻击
    • 5.1 防火墙
    • 5.2 DOS攻击和DDoS攻击
    • 5.3 保护MySQL主机
  • 六、数据库的恢复和备份
    • 6.1 MySQL的备份配置
    • 6.2 自动化备份
      • 6.2.1 如何使用mysqldump命令进行备份?
      • 6.2.2 如何使用Xtrabackup进行备份?
      • 6.2.3 如何使用AWS的RDS进行备份?
    • 6.3 MySQL的恢复

一、简介

1.1 为什么MySQL安全很重要

MySQL是许多公司和组织的关键数据库,因此其安全性的重要性如此显而易见。受到网络攻击和黑客入侵的风险不断增加。一旦被黑客攻击或数据泄漏的风险,将严重损害业务流程、品牌声誉和数据安全。MySQL中存储的敏感信息包括:

  • 用户名和密码
  • 个人身份证件信息、地址和联系方式
  • 业务逻辑和关键业务数据

因此,为了确保MySQL的安全性,需要采取多种措施来增强其安全性。

1.2 MySQL安全的威胁

二、配置安全性

MySQL服务器提供了许多配置选项来保护其安全性。下面介绍一些基本配置选项:

2.1 基本配置

  • 关闭不必要的MySQL服务和端口
  • 禁用匿名用户
  • 禁用非必要的插件和功能
  • 设置强密码策略和口令策略

2.2 安全连接

MySQL支持SSL/TLS协议,可以使用安全连接保护敏感数据传输。使用安全连接需要安装SSL证书。以下是简单的代码示例:

mysql> GRANT USAGE ON *.* TO 'ssluser'@'localhost' REQUIRE SSL;
mysql> SHOW GRANTS FOR ssluser@localhost;

2.3 加密

MySQL支持不同类型的加密算法来保护敏感数据,例如AES加密算法。下面是示例代码:

mysql> CREATE TABLE CreditCard (
         CC_number    VARBINARY(20),
         CC_holder    VARBINARY(100),
         CC_exp_month VARBINARY(2),
         CC_exp_year  VARBINARY(4),
         CC_cvv       VARBINARY(3)
      );
mysql> INSERT INTO CreditCard VALUES (
         AES_ENCRYPT('1234567890123456','password'),
         AES_ENCRYPT('Firstname Lastname','password'),
         AES_ENCRYPT('12','password'),
         AES_ENCRYPT('2021','password'),
         AES_ENCRYPT('123','password')
      );

2.4 身份验证

  • 每个MySQL用户都有一个用户名和密码。强制使用复杂密码来保护MySQL账号,并禁止使用相同的密码。
  • MySQL提供了多个身份验证方法,例如基于密码的身份验证和基于SSL证书的身份验证。需要选择适当的身份验证方法来保护MySQL账号。

2.5 日志记录

MySQL提供了多种日志记录方法,例如查询日志、二进制日志和慢查询日志,这些日志可以帮助识别和跟踪安全事件。下面是一个简单的记录查询日志的示例:

mysql> SET general_log = 'ON';
mysql> SET log_output = 'TABLE';
mysql> SELECT * FROM mysql.general_log;

三、用户管理

MySQL提供了灵活的用户管理功能来控制访问和操作权限。下面是一些用户管理的关键点。

3.1 用户权限

3.1.1 MySQL的权限管理架构

MySQL的权限管理架构基于四个关键概念:权限、用户、角色和资源。权限是执行操作的许可证,用户是MySQL管理的使用者,角色是一组权限的集合,资源是需要访问的涉及到的对象(例如表)。

3.1.2 授予和收回用户权限的命令

MySQL提供了GRANT和REVOKE命令来授予和收回用户权限。以下是简单的代码示例:

mysql> GRANT SELECT, INSERT, UPDATE ON dbname.tablename TO username@localhost;
mysql> REVOKE INSERT ON dbname.tablename FROM username@localhost;

3.1.3 限制用户只能访问特定表

要限制用户只能访问特定表,可以使用GRANT命令并指定特定表的权限。例如,以下命令将授予用户“username”仅对“tablename”表的读取权限:

GRANT SELECT ON dbname.tablename TO username@localhost;

3.2 用户口令

3.2.1 MySQL口令策略

MySQL的口令策略决定了用户创建和使用密码的规则。MySQL默认的密码策略较弱,因此建议加强口令策略。强口令策略应该要求用户选择复杂的密码,包括字母、数字和符号,并且定期更改密码。

3.2.2 加强MySQL口令策略的措施

要加强MySQL口令策略,可以使用以下措施:

  • 通过修改MySQL配置文件,将密码最小长度设置为8位或更多。
  • 禁止使用简单的密码,例如“password”、“123456”等。
  • 要求用户选择的密码必须包含数字、大写字母、小写字母和符号等字符。
  • 禁止用户将密码与个人信息(例如生日、家庭地址等)相关联。
  • 设置密码到期时间,强制用户在到期之前更改密码。
3.2.2.1 如何 通过修改MySQL配置文件,将密码最小长度设置为8位或更多?

1.打开MySQL的配置文件my.cnf。该文件通常位于MySQL安装目录下的/etc或者/etc/mysql目录下,具体位置可以根据实际情况进行查找。

2.在my.cnf文件中添加如下配置项:

validate_password_policy=STRONG
validate_password_length=8

validate_password_policy参数指定了密码策略的强度,STRONG表示较强的密码策略;validate_password_length参数指定了密码最小长度为8位。保存my.cnf文件,并重启MySQL服务,以使配置生效。

当用户在修改密码时,如果密码长度不足8位,MySQL将拒绝修改。这有助于提高系统安全性和减少密码被猜测、破解的可能性。

3.3 改善口令

3.3.1 密码加密方式

MySQL使用哈希算法对密码进行加密,常用的算法有MD5和SHA-1。建议使用SHA-256或更强的算法,这种加密方式更难以破解。

3.3.1.1 如何在MySQL使用 SHA-256 加密

在MySQL中,可以使用SHA-256哈希算法对密码进行加密。在创建用户时,可以使用以下命令使用SHA-256哈希算法对密码进行加密:

CREATE USER '用户名'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码' PASSWORD_EXPIRE INTERVAL 180 DAY;
ALTER USER '用户名'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';

在这个命令中,mysql_native_password是MySQL的本机密码插件,它支持SHA-256哈希算法。可以使用PASSWORD()函数生成SHA-256密码,例如:

SELECT PASSWORD('myPassword', 'salt_string');

其中’salt_string’是可选的盐值,可以使用一个随机字符串来增加密码的安全性。使用生成的密码,将SHA-256哈希算法应用到MySQL用户的密码中:

ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY '*76446E5FDDCC896A81B214DB0BE7D4FA4BFBFF45';

这个命令将生成一个SHA-256哈希密码,并将其应用到’user’用户的密码中。

需要注意的是,当您使用SHA-256哈希算法时,旧的客户端可能无法连接到MySQL服务器。仅当客户端的版本支持所选哈希算法时,才能使用该算法进行身份验证。因此,在使用SHA-256哈希算法进行密码加密时,需要确保所有客户端都可以使用该算法。

3.3.1.2 如何在MySQL使用 SHA-384 加密

在MySQL中,可以使用SHA-384哈希算法对密码进行加密。在创建用户时,可以使用以下命令使用SHA-384哈希算法对密码进行加密:

CREATE USER '用户名'@'localhost' IDENTIFIED WITH sha256_password BY '密码' PASSWORD_EXPIRE INTERVAL 180 DAY;
ALTER USER '用户名'@'localhost' IDENTIFIED WITH sha256_password BY '密码';

在这个命令中,sha256_password是MySQL的SHA-256密码插件的替代插件,它们都支持SHA-384哈希算法。可以使用SHA2()函数生成SHA-384密码,例如:

SELECT SHA2('myPassword', 384);

使用SHA-384密码,将SHA-384哈希算法应用到MySQL用户的密码中:

ALTER USER 'username'@'localhost' IDENTIFIED WITH sha256_password BY '*AE759302785D032F778FCE1747B8659EF1574188E1C0DC95F4202BA49716F3FE8B890AA858E30A1AB3A84307A9F91E29';

这个命令将生成一个SHA-384哈希密码,并将其应用到’user’用户的密码中。

需要注意的是,当您使用SHA-384哈希算法时,旧的客户端可能无法连接到MySQL服务器。仅当客户端的版本支持所选哈希算法时,才能使用该算法进行身份验证。因此,在使用SHA-384哈希算法进行密码加密时,需要确保所有客户端都可以使用该算法。

3.3.1.3 如何在MySQL使用 SHA-512 加密

在MySQL中,可以使用SHA-512哈希算法对密码进行加密。在创建用户时,可以使用以下命令使用SHA-512哈希算法对密码进行加密:

CREATE USER '用户名'@'localhost' IDENTIFIED WITH sha512_password BY '密码' PASSWORD_EXPIRE INTERVAL 180 DAY;
ALTER USER '用户名'@'localhost' IDENTIFIED WITH sha512_password BY '密码';

在这个命令中,sha512_password是MySQL的SHA-512密码插件,它支持SHA-512哈希算法。可以使用SHA2()函数生成SHA-512密码,例如:

SELECT SHA2('myPassword', 512);

使用SHA-512密码,将SHA-512哈希算法应用到MySQL用户的密码中:

ALTER USER 'username'@'localhost' IDENTIFIED WITH sha512_password BY '*08744A8D01DE7FD9C6A276E7C80F09C22439BDBE693646C84E7BA97BBB8F6907F9E6C5F5EE5F5D3EF46FF75E340991734515B29112AF6C60D9B166083B83BCC1';

这个命令将生成一个SHA-512哈希密码,并将其应用到’user’用户的密码中。

需要注意的是,当您使用SHA-512哈希算法时,旧的客户端可能无法连接到MySQL服务器。仅当客户端的版本支持所选哈希算法时,才能使用该算法进行身份验证。因此,在使用SHA-512哈希算法进行密码加密时,需要确保所有客户端都可以使用该算法。

3.3.2 定期修改密码

为了确保安全性,建议用户定期更改其密码。管理员可以要求用户在每隔3-6个月更改他们的密码,以帮助确保安全。

3.4 用户角色

3.4.1 用户角色的定义与作用

用户角色是一组权限和访问控制的集合,可以通过将角色分配给用户来轻松管理和控制用户访问权限。通过给用户授权角色而不是直接向用户授予权限,可以使权限管理更加简便。

3.4.2 如何创建用户角色

可以使用MySQL提供的CREATE ROLE命令创建用户角色,例如:

CREATE ROLE 'analyst';

创建角色之后,可以使用GRANT命令授予角色特定的权限,例如:

GRANT SELECT, INSERT, UPDATE ON employees.* TO 'analyst';

然后可以将角色分配给用户,例如:

GRANT 'analyst' TO 'user1';

这会将角色“analyst”的权限授予用户“user1”。以后,如果要更改角色的权限,只需更改角色本身,而不必更改每个用户的权限。

3.5 使用SSL证书

3.5.1 SSL证书的作用

SSL证书可以确保MySQL连接的安全性,防止数据被窃听或篡改。使用SSL证书可以保护数据在网络上传输过程中的安全性。

3.5.2 使用SSL证书加密MySQL连接

要在MySQL中启用SSL连接,需要生成SSL证书和密钥,并在MySQL配置文件中启用SSL选项。以下是一些基本步骤:

  • 在MySQL服务器上生成SSL证书和密钥。您可以使用OpenSSL工具生成SSL证书和密钥。
  • 将证书和密钥复制到MySQL服务器上的安全目录中,并通过修改MySQL配置文件来启用SSL选项。确保配置文件中的ssl-cert和ssl-key选项指向正确的证书和密钥文件。
  • 重新启动MySQL服务器以使更改生效。

在MySQL客户端上,可以使用–ssl选项来指定使用SSL连接。

mysql --ssl -u user -p

启用SSL后,所有传输到和从MySQL服务器的数据都将被加密,可确保数据的机密性和完整性。

四、数据加密

4.1 存储过程加密

MySQL Enterprise Edition中提供了加密存储过程的功能,可以使用AES_ENCRYPT函数来加密存储过程的内容。这可以使存储过程的源代码变得不可读,从而更好地保护存储过程的安全。

要加密存储过程,请先创建存储过程,然后使用AES_ENCRYPT函数加密其内容:

CREATE PROCEDURE myproc()
    ENCRYPTED
BEGIN
    SELECT AES_ENCRYPT('my secret data', 'my key');
END;

此时,存储过程的内容已被加密。只有具有解密密钥的人才能够读取其内容。

4.2 数据加密算法

MySQL支持多种数据加密算法,包括AES、DES和Triple DES等。在选择加密算法时,应根据需要平衡安全性和效率。其中AES算法是目前最常用的加密算法之一,具有较高的安全性和较快的加密速度。

要使用AES加密算法加密数据,请使用AES_ENCRYPT函数:

SELECT AES_ENCRYPT('my secret data', 'my key');

这将加密“my secret data”字符串,并使用“my key”作为加密密钥。可以使用AES_DECRYPT函数将其解密。

4.3 数据传输加密

MySQL支持通过SSL加密传输数据以确保安全性和隐私。要在MySQL中启用SSL连接,请生成SSL证书和密钥,并在MySQL配置文件中启用SSL选项。然后可在MySQL客户端上使用–ssl选项来指定使用SSL连接。

在使用SSL时,所有传输到和传输自MySQL服务器的数据都将被加密。这可以在数据传输过程中保护数据的机密性和完整性。

五、防止网络攻击

5.1 防火墙

防火墙可以帮助保护MySQL服务器免受网络攻击。防火墙可以阻止未经授权的IP地址访问MySQL服务器,从而提供一定程度的安全性保障。

在设置防火墙时,管理员应注意确保允许访问MySQL端口的IP地址是可信的。可以使用iptables或ufw等工具来设置防火墙。

5.2 DOS攻击和DDoS攻击

DOS攻击和DDoS攻击可以使MySQL服务器不可用。为了防止此类攻击,可以采取以下措施:

  • 使用DDoS防护服务。这些服务可以监视流量并过滤掉恶意流量。
  • 限制每个IP地址的连接数。可以使用MySQL的max_connections参数限制每个IP地址的最大连接数,从而防止恶意的连接尝试。
  • 使用网络流量分析工具。这些工具可以防范密码爆破或其他网络攻击。

5.3 保护MySQL主机

保护MySQL主机是确保安全的关键步骤之一。以下是一些基本的安全最佳实践:

  • 安装MySQL的最新版本,并及时应用安全更新。
  • 使用强密码和加密算法来保护MySQL账户和密码。
  • 禁止使用root账户,使用授权的账户来管理服务器。
  • 定期备份数据库,以便在需要时进行恢复。
  • 仅允许可信任的IP地址访问MySQL服务器。
  • 启用日志记录,以便检测和跟踪安全事件。

六、数据库的恢复和备份

6.1 MySQL的备份配置

备份MySQL数据库是确保数据安全性和完整性的关键步骤之一。以下是一些备份最佳实践:

  • 定期备份数据库,以便在数据丢失或损坏时进行恢复。
  • 在备份过程中使用正确的备份设置,例如备份类型、备份路径、备份时间等。
  • 当备份完成时,确保备份数据的完整性和可恢复性。
  • 测试备份的还原过程,以确保备份的完整性和可恢复性。
  • 定期监视备份的日志和记录,以便检测潜在的备份问题。

6.2 自动化备份

  • 使用MySQL自带的mysqldump命令进行备份。可以使用计划任务或者cron来定期运行备份命令。
  • 使用第三方备份工具如Xtrabackup和Percona Backup进行备份。
  • 利用云服务的备份功能,如AWS的RDS,可以创建定期备份,维护备份保留时间和备份复制等功能。同时,还可以通过将备份数据存储至云存储中保证存储的可靠性和持久性。

6.2.1 如何使用mysqldump命令进行备份?

  • 打开命令提示符,进入MySQL的bin目录(在MySQL安装目录下)。
  • 在命令提示符中,输入以下命令进行备份:
mysqldump -uUSERNAME -p DATABASE_NAME > BACKUP_FILE_NAME.sql

其中:

  • USERNAME是具有备份权限的MySQL用户名。
  • DATABASE_NAME是要备份的数据库名称。
  • BACKUP_FILE_NAME是备份文件的名称和存储位置。

例如,以下命令备份名为testdb的数据库并将备份文件存储在D盘根目录:

mysqldump -uroot -p testdb > D:\backup.sql
  • 在命令提示符中按 Enter 键,程序将提示您输入MySQL密码。输入正确的密码,然后按 Enter 键。
  • 备份文件将保存在指定的位置,备份完成。

如果要将备份还原到数据库中,可以使用以下命令:

mysql -uUSERNAME -p DATABASE_NAME < BACKUP_FILE_NAME.sql

其中:

  • USERNAME是具有还原权限的MySQL用户名。
  • DATABASE_NAME是要还原的数据库名称。
  • BACKUP_FILE_NAME是备份文件的名称和存储位置。
    例如,以下命令从备份文件中还原名为testdb的数据库:
mysql -uroot -p testdb < D:\backup.sql

需要注意的是,使用mysqldump备份和还原数据库时需要具有相应的MySQL权限,并且备份文件的大小可能会比较大,需要足够的存储空间。

6.2.2 如何使用Xtrabackup进行备份?

Xtrabackup是一个高性能的开源备份工具,常用于对MySQL数据库进行物理备份。以下是使用Xtrabackup进行备份的具体操作步骤和示例代码:

1.安装Xtrabackup。
Xtrabackup可以从官网下载并安装,也可以使用软件包管理器进行安装。在Ubuntu系统中,可以使用以下命令进行安装:

sudo apt-get install percona-xtrabackup

在CentOS系统中,可以使用以下命令进行安装:

sudo yum install percona-xtrabackup

2.使用Xtrabackup进行备份。
使用Xtrabackup进行备份的命令如下:

sudo xtrabackup --backup --user=备份用户 --password=备份用户密码 --target-dir=目标文件夹

其中:

  • backup用于指定进行备份操作。
  • user指定备份用户的用户名。
  • password指定备份用户的密码。
  • target-dir指定备份文件的存储路径。

例如:

sudo xtrabackup --backup --user=root --password=123456 --target-dir=/backup

执行该命令后,Xtrabackup将对MySQL数据库进行物理备份,并将备份文件存储在/backup目录中。

3.使用Xtrabackup进行恢复。
使用Xtrabackup进行恢复的命令如下:

sudo xtrabackup --copy-back --target-dir=目标文件夹

其中:

  • copy-back用于指定进行恢复操作。
  • target-dir指定备份文件的存储路径。

例如:

sudo xtrabackup --copy-back --target-dir=/backup

执行该命令后,Xtrabackup将使用备份文件/backup目录中的数据进行数据库恢复。

需要注意的是,使用Xtrabackup进行备份和恢复数据库时,需要具有相应的MySQL权限,并且备份文件的大小可能会比较大,需要足够的存储空间。同时,在恢复操作前应该备份原来的数据库,以免数据丢失。

6.2.3 如何使用AWS的RDS进行备份?

  • 登录 AWS 控制台并导航到 RDS 服务页面。
  • 选择您要备份的数据库实例,并在操作菜单中选择“创建快照”。
  • 在“创建 DB 快照”对话框中,为快照命名,然后选择“创建快照”。
  • 等待快照创建完成,您可以在“快照”页面上查看已创建的快照。
  • 下载快照文件。在 AWS RDS 控制台页面上,选择您要下载的快照并单击“下载”。

详细命令和代码

您可以使用 AWS CLI 或 AWS SDK 中的适当 API 从 AWS RDS 中备份 MySQL 数据库实例。以下是使用 AWS CLI 进行备份的命令示例:

aws rds create-db-snapshot --db-instance-identifier mytestdb --db-snapshot-identifier mysnapshot

其中,mytestdb 是要备份的 MySQL 数据库实例的标识符,而 mysnapshot 是新创建的快照的标识符。

也可以通过 AWS RDS API 进行备份。以下是使用 AWS PHP SDK 进行备份的代码示例:

<?php

require './vendor/autoload.php';

$client = new Aws\Rds\RdsClient([
    'version' => 'latest',
    'region' => 'us-west-2'
]);

$result = $client->createDBSnapshot([
    'DBInstanceIdentifier' => 'mytestdb',
    'DBSnapshotIdentifier' => 'mysnapshot'
]);

print_r($result);

?>

其中,mytestdb 是要备份的 MySQL 数据库实例的标识符,而 mysnapshot 是新创建的快照的标识符。

6.3 MySQL的恢复

MySQL的恢复分为逻辑恢复和物理恢复两种方式。

逻辑恢复: 顾名思义,是通过逻辑手段恢复数据,通常用于数据误删除或数据误修改时的恢复。在逻辑恢复过程中,可以使用MySQL自带的工具mysqldump,将备份得到的SQL文件中的数据恢复到原数据库或者新建的数据库中。

物理恢复: 是通过物理手段恢复数据,通常用于硬盘、磁盘或者系统崩溃、损坏等情况下的恢复。在物理恢复中,可以通过复制磁盘镜像、重建InnoDB引擎的事务日志(redo log)和崩溃恢复日志(undo log)等手段来恢复数据。

在进行MySQL的数据恢复时,需要首先评估是否需要使用逻辑恢复或者物理恢复,选择合适的恢复方法进行操作。同时,在恢复过程中需要注意备份文件的完整性、MySQL的版本或者存储引擎的差异等因素,以确保恢复过程的成功。

到此这篇关于MySQL数据库安全秘籍之守护数据金库防火防盗防攻击的文章就介绍到这了,更多相关mysql数据库安全内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySQL数据库重命名的快速且安全方法(3种)

    MySQL数据库重命名的方法 Innodb引擎的表如何改数据库名,MyISAM引擎又该如何操作. 如果表是MyISAM引擎可以直接去到数据库目录mv重命名文件夹就可以. Innodb完全不行,会提示相关表不存在. 第一种方法:rename database 弃用了 RENAME database old_db_name TO new_db_name 这个是5.1.7到5.1.23版本可以用的,但是官方不推荐,会有丢失数据的危险 第二种方法:mysqldump 备份 1.创建需要改成新名的数据库.

  • MySQL数据库必知必会之安全管理

    目录 权限表 1. user 表 2. db 表 3. tables_priv 表 4. columns_priv 表 账户管理 1. 新建普通用户 2. 删除普通用户 3. Root 用户修改自己的密码 4. Root 用户修改普通用户的密码 密码管理 1. 密码过期策略 2. 密码重用策略 角色 1. 创建角色并授权 2. 给用户添加角色 3. 编辑角色或权限 4. 删除角色 总结 权限表 MySQL 服务器通过权限表来控制用户对数据库的访问,由 mysql_install_db 脚本初始化

  • 安全快速修改Mysql数据库名的5种方法

    1. RENAME DATABASE db_name TO new_db_name这个..这个语法在mysql 5.1.7中被添加进来,到了5.1.23又去掉了.据说有可能丢失数据.还是不要用的好.详见: http://dev.mysql.com/doc/refman/5.1/en/rename-database.html 2.如果所有表都是MyISAM类型的话,可以改文件夹的名字关闭mysqld把data目录中的db_name目录重命名为new_db_name开启mysqld 3.重命名所有的

  • MySQL数据库安全之防止撰改的方法

    MySQL数据库可以通过触发器,使之无法修改某些字段的数据,同时又不会影响修改其他字段. DROP TRIGGER IF EXISTS `members`; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=''; DELIMITER // CREATE TRIGGER `members` BEFORE UPDATE ON `members` FOR EACH ROW BEGIN set new.name = old.name; set new.cellphone =

  • MySQL数据库中的安全设置方案

    随着网络的普及,基于网络的应用也越来越多.网络数据库就是其中之一.通过一台或几台服务器可以为很多客户提供服务,这种方式给人们带来了很多方 便,但也给不法分子造成了可乘之机.由于数据都是通过网络传输的,这就可以在传输的过程中被截获,或者通过非常手段进入数据库.由于以上原因,数据库安全 就显得十分重要.因此,本文就以上问题讨论了MySQL数据库在网络安全方面的一些功能. 帐户安全 帐户是MySQL最简单的安全措施.每一帐户都由用户名.密码以及位置(一般由服务器名.IP或通配符)组成.如用户john从

  • 保障MySQL数据安全的一些建议

    数据是企业核心资产,数据对企业而言是最重要的工作之一.稍有不慎,极有可能发生数据无意泄露,甚至被黑客恶意窃取的风险.每年业界都会传出几起大事件,某知名或不知名的公司被脱裤(拖库的谐音,意思是整个数据库被黑客盗取)之类的. 从数据安全上也可以分为外网安全及内部操作安全,下面分别讨论一下. 内部操作安全策略 1. 是否回收DBA全部权限 试想,如果DBA没权限了,日常DB运维的活,以及紧急故障处理,该怎么实施呢?因此,建议在没有成熟的自动化运维平台前,不应该粗暴的回收DBA的太多权限,否则可能会导致

  • MySQL数据库安全秘籍之守护数据金库防火防盗防攻击

    目录 一.简介 1.1 为什么MySQL安全很重要 1.2 MySQL安全的威胁 二.配置安全性 2.1 基本配置 2.2 安全连接 2.3 加密 2.4 身份验证 2.5 日志记录 三.用户管理 3.1 用户权限 3.1.1 MySQL的权限管理架构 3.1.2 授予和收回用户权限的命令 3.1.3 限制用户只能访问特定表 3.2 用户口令 3.2.1 MySQL口令策略 3.2.2 加强MySQL口令策略的措施 3.3 改善口令 3.3.1 密码加密方式 3.3.2 定期修改密码 3.4 用

  • MySQL数据库使用mysqldump导出数据详解

    mysqldump是mysql用于转存储数据库的客户端程序.它主要产生一系列的SQL语句,可以封装到文件,该文件包含有所有重建您的数据库所需要的 SQL命令如CREATE DATABASE,CREATE TABLE,INSERT等等.可以用来实现轻量级的快速迁移或恢复数据库.是mysql数据库实现逻辑备份的一种方式. 在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具:它自带的功能参数非常多,文章中会列举出一些常用的操作,在文章末尾会将所有

  • mysql取得datetime类型的数据,后面会跟个.0的实现方法

    mysql的数据类型是datetime,数据库里存的数据是2015-01-19 05:02:02,传到java这里变成了2015-01-19 05:02:02.0,多了个尾巴.0, 可以通过以下集中方法来format显示格式: 1.regtime的类型是date型的才能这样用,通过jstl来实现 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <fmt:format

  • mysql 找回误删表的数据方法(必看)

    有备份的话很简单,只需要生成一个最近备份的数据 然后用mysqlbinlog找回备份时间点之后的数据 再恢复到现网即可. 要是没有备份 可能就会比较麻烦,找回数据的成本也是非常之高的. 下面介绍下 mysqlbinlog找回备份时间点之后的数据的办法: 做个简单的实验,将mysql的表数据删除之后,然后用mysqlbinlog 找回刚才删除的表的数据. app表的创建时间和数据的插入: 2013-02-04 10:00:00 原理: mysqlbinlog 前提: mysql开启了bin log

  • mysql 复制表结构和数据实例代码

    在mysql数据库开发中,我们有时候需要复制或拷贝一张表结构和数据到例外一张表,这个时候我们可以使用create ... select ... from语句来实现,本文章向大家介绍mysql复制表结构和数据一个简单实例, 比如现在有一张表,我们要将该表复制一份,以备以后使用,那么如何使用mysql语句来实现呢?其实我们可以直接使用create ... select ... from语句来实现,具体实现方法请看下面实例. 我们先来创建一张Topic表,创建Topic表的SQL语句如下: mysql

  • 基于PHP和Mysql相结合使用jqGrid读取数据并显示

    jqGrid可以动态读取和加载外部数据,本文将结合PHP和Mysql给大家讲解如何使用jqGrid读取数据并显示,以及可以通过输入关键字查询数据的ajax交互过程. 下面给大家展示效果图,喜欢的朋友可以阅读全文哦. jqGrid本身带有search和edit表格模块,但是这些模块会使得整个插件体积显得有点庞大,而且笔者认为jqGrid的搜索查询和编辑/添加功能不好用,所以笔者放弃jqGrid自有的search和edit表格模块,借助jquery利器来完成相关功能,符合项目的实际应用. XHTML

  • 如何使用mysql完成excel中的数据生成

    Excel是数据分析中最常用的工具,本篇文章通过mysql与excel的功能对比介绍如何使用mysql完成excel中的数据生成,数据清洗,预处理,以及最常见的数据分类,数据筛选,分类汇总,以及数据透视等操作.本篇文章我们介绍第5,6,7部分内容,数据提取,数据筛选以及数据汇总及透视. 5,数据提取 第五部分是数据提取,也是数据分析中最常见的一个工作.下面介绍每一种函数的使用方法. 按列提取数据 #按列提取 SELECT city FROM data1; 按行提取数据 #按行提取 SELECT

  • Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法

    本文实例讲述了Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding:utf-8 -*- """ Purpose: 生成日汇总对账文件 Created: 2015/4/27 Modified:2015/5/1 @author: guoyJoe """ #导入模块 import MySQLdb import time impor

  • Django使用Mysql数据库已经存在的数据表方法

    使用scrapy爬取了网上的一些数据,存储在了mysql数据库中,想使用Django将数据展示出来,在网上看到都是使用Django的models和makemigration,migrate命令来创建新表,并使用. 可是我的数据已经存在了已经创建好,并且已经存储有数据了,不能再重新创建新表了. 了解Django的表明和models名称的映射关系就可以让Django使用已经存在的表. 假如在Django存在models如下: from django.db import models # Create

  • mysql创建存储过程实现往数据表中新增字段的方法分析

    本文实例讲述了mysql创建存储过程实现往数据表中新增字段的方法.分享给大家供大家参考,具体如下: 需求: 往某数据库的某个表中新增一个字段(若该字段已存在,则不做操作:若该字段不存在,则新增) 百度了n久,没有符合要求的例子,只有参考加自己琢磨,最终终于给弄出来了,以下是几个版本的更迭 第一版: DELIMITER $$ CREATE PROCEDURE insert_column() BEGIN IF NOT EXISTS(SELECT 1 FROM information_schema.c

随机推荐