版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、部署方案一 Mysql数据库所处环境的设置:1)、修改root用户口令,删除空口令# /usr/local/mysql/bin/mysqladmin -u root password “upassword” /使用mysqladmin#mysql> use mysql; #mysql> update user set password=password('upassword') where user='root' #mysql> flush privileges; /强制刷新内存授权表,否则用的还是在内存缓冲的口令2)、删除默认数据库和数据库用
2、户#mysql> show databases; #mysql> drop database test; /删除数据库test#use mysql; #delete from db; /删除存放数据库的表信息,因为还没有数据库信息。#mysql> delete from user where not (user='root') ; / 删除初始非root的用户#mysql> delete from user where user='root' and password='' /删除空密码的root,尽量
3、重复操作Query OK, 2 rows affected (0.00 sec) #mysql> flush privileges; /强制刷新内存授权表。3)、改变默认mysql管理员帐号mysql> update user set user="newroot" where user="root" /改成不易被猜测的用户名mysql> flush privileges;4)、关于密码的管理#mysql> insert into users values (1,password(1234),'test');5)、使
4、用独立用户运行msyql#vim /etc/f mysqld user=mysql6)、禁止远程连接数据库# vim /etc/my.cf将#skip-networking注释去掉。# /usr/local/mysql/bin/mysqladmin -u root -p shutdown /停止数据库#/usr/local/mysql/bin/mysqld_safe -user=mysql & /后台用mysql用户启动mysql7)、限制连接用户的数量#vim /etc/f mysqld max_user_connections 28)、用户目录权限限制# chown -R root
5、 /usr/local/mysql/ /mysql主目录给root# chown -R mysql.mysql /usr/local/mysql/var /确保数据库目录权限所属mysql用户9)、命令历史记录保护# rm .bash_history .mysql_history /删除历史记录# ln -s /dev/null .bash_history /将shell记录文件置空# ln -s /dev/null .mysql_history /将mysql记录文件置空10)、禁止MySQL对本地文件存取# vi sq
6、l1,sszng,1112,sman,222#mysql> load data local infile 'sql' into table users fields terminated by ',' /读入数据#mysql> select * from users;+-+-+-+| userid | username | password |+-+-+-+| 1 | sszng | 111 |&
7、#160; 2 | sman | 222 |+-+-+-+可以在f中添加local-infile=0,或者加参数local-infile=0启动mysql。#/usr/local/mysql/bin/mysqld_safe -user=mysql -local-infile=0 &#mysql> load data local infile 'sql' into table users fields terminated by ','#ERROR 114
8、8 (42000): The used command is not allowed with this MySQL version-local-infile=0选项启动mysqld从服务器端禁用所有LOAD DATA LOCAL命令,假如需要获取本地文件,需要打开,但是建议关闭。11)、MySQL服务器权限控制#mysql> load data infile 'sql' into table ers fields terminated by ','Query OK, 4 rows affected (0.00 sec) /读取本地信息sql'Re
9、cords: 4 Deleted: 0 Skipped: 0 Warnings: 0#mysql> update user set ='N' where user='root' /禁止读取权限Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0mysql> flush privileges; /刷新授权表Query OK, 0 rows affected (0.00 sec)#mysql> l
10、oad data infile 'sql' into table users fields terminated by ',' /重登陆读取文件#ERROR 1045 (28000): Access denied for user 'root''localhost' (using password: YES) /失败# mysql> select * from ers into outfile 'test.txt' fields terminated by ','ERROR 1045 (280
11、00): Access denied for user 'root''localhost' (using password: YES)为了安全起见,随时使用SHOW GRANTS语句检查查看谁已经访问了什么。然后使用REVOKE语句删除不再需要的权限。二保证数据目录访问的安全以下是对权限的修正,使得只用服务器用户可访问它们:1. 进入该目录% cd DATADIR2. 设置所有在数据目录下的文件属主为由用于运行服务器的账号拥有(以root执行这步)。下列命令之一可改变属主:1)# chown mysqladm.mysqlgrp .2)# find . -foll
12、ow -type d -print | xargs chown mysqladm.mysqlgrp3. 设置数据目录和数据库目录的模式使得他们只能由mysqladm读取,可阻止其他用户访问自己的数据库目录的内容。下列命令之一以root或mysqladm身份运行。1)% chmod -R go-rwx .2)% find . -follow -type d -print | xargs chmod go-rwx4. 数据目录内容的属主和模式为mysqladm设置。保证总是以mysqladm用户运行服务器,因为现在这是唯一由访问数据库目录权限的用户(除root)。 在完成这些设置后,最终应该得到下
13、面的数据目录权限:% ls ltotal 10148drwxrwx- 11 mysqladm mysqlgrp 1024 May 8 12:20 .drwxr-xr-x 22 root wheel 512 May 8 13:31 .drwx- 2 mysqladm mysqlgrp 512 Apr 16 15:57 menageriedrwx- 2 mysqladm mysqlgrp 512 Jan 25 20:40 mysqldrwx- 7 mysqladm mysqlgrp 512 Aug 31 1998 sql-benchdrwx- 2 mysqladm mysqlgrp 1536 Ma
14、y 6 06:11 testdrwx- 2 mysqladm mysqlgrp 1024 May 8 18:43 tmp三、保证网络访问的安全给数据库用户加口令,一下有三种方法:1)在shell提示符下用MySQLadmin命令来改root用户口令:shell>MySQLadmin -uroot password test2)用set password修改口令:MySQL> set password for rootlocalhost=password('test');3)直接修改user表的root用户口令:mysql> use MySQL;MySQL>
15、; update user set password=password('test') where user='root'MySQL> flush privileges;我们还看到user为空的匿名用户,为了安全起见删除它:MySQL> delete from user where user=''删除Host字段为%的记录:MySQL>delete from user where host='%'删除匿名用户:MySQL> delete from user where user=''四、数据
16、库加密双向加密下面是一个简单的实例:mysql> INSERT INTO users (username, password) VALUES ('joe', ENCODE('guessme', 'abracadabra');Query OK, 1 row affected (0.14 sec)其中,Joe的密码是guessme,它通过密钥abracadabra被加密。要注意的是,加密完的结果是一个二进制字符串,如下所示:mysql> SELECT * FROM users WHERE username='joe'+-+
17、-+| username | password |+-+-+| joe | ¡?i?!? |+-+-+1 row in set (0.02 sec)下面是它的使用方法:mysql> SELECT DECODE(password, 'abracadabra') FROM users WHERE username='joe'+-+| DECODE(password, 'abracadabra') |+-+| guessme |+-+1 row in set (0.00 sec)很容易看到它在Web应用程序里是如何运行的在验证用户登录的
18、时候,DECODE()会用网站专用的密钥解开保存在数据库里的密码,并和用户输入的内容进行对比。若把PHP用作自己的脚本语言,那么可以像下面这样进行查询:$query = "SELECT COUNT(*) FROM users WHERE username='$inputUser' AND DECODE(password, 'abracadabra') = '$inputPass'"?>提示:虽然ENCODE()和DECODE()这两个函数能够满足大多数的要求,但是有的时候需要使用强度更高的加密手段。在这种情况下,则使用A
19、ES_ENCRYPT()和AES_DECRYPT()函数,它们的工作方式是相同的,但是加密强度更高。单项加密下面是如何使用它的一个简单例子:mysql> INSERT INTO users (username, password) VALUES ('joe', MD5('guessme');Query OK, 1 row affected (0.00 sec)mysql> SELECT * FROM users WHERE username='joe'+-+-+| username | password |+-+-+| joe | 8
20、1a58e89df1f34c5487568e17327a219 |+-+-+1 row in set (0.02 sec)测试用户输入的内容是否与已经保存的密码匹配的方法是取得用户输入密码的MD5校验码,并将它与已经保存的密码进行比对,像下面这样:mysql> SELECT COUNT(*) FROM users WHERE username='joe' AND password=MD5('guessme');+-+| COUNT(*) |+-+| 1 |+-+1 row in set (0.00 sec)下面一个例子说明如何使用它:mysql> I
21、NSERT INTO users (username, password) VALUES ('joe', ENCRYPT('guessme', 'ab');Query OK, 1 row affected (0.00 sec)mysql> SELECT * FROM users WHERE username='joe'+-+-+| username | password |+-+-+| joe | ab/G8gtZdMwak |+-+-+1 row in set (0.00 sec)结果是:mysql> SELECT
22、COUNT(*) FROM users WHERE username='joe' AND password=ENCRYPT('guessme', 'ab');+-+| COUNT(*) |+-+| 1 |+-+1 row in set (0.00 sec)提示:ENCRYPT()只能用在*NIX系统上,因为它需要用到底层的crypt()库。五、数据库备份与还原1、mysqldump1.1 备份使用以下 SQL 来备份 MyISAM 表: /usr/local/mysql/bin/mysqldump -uyejr -pyejr -default-c
23、haracter-set=utf8 -opt -extended-insert=false -triggers -R -hex-blob -x db_name > db_name.sql使用以下 SQL 来备份 Innodb 表: /usr/local/mysql/bin/mysqldump -uyejr -pyejr -default-character-set=utf8 -opt -extended-insert=false -triggers -R -hex-blob -single-transaction db_name > db_name.sql1.2 还原用 mysql
24、dump 备份出来的文件是一个可以直接倒入的 SQL 脚本,有两种方法可以将数据导入。· 直接用 mysql 客户端 例如: /usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_name.sql· 用 SOURCE 语法 其实这不是标准的 SQL 语法,而是 mysql 客户端提供的功能,例如: SOURCE /tmp/db_name.sql;这里需要指定文件的绝对路径,并且必须是 mysqld 运行用户(例如 nobody)有权限读取的文件。2、 mysqlhotcopy2.1 备份mysqlhotcopy 支
25、持一次性拷贝多个数据库,同时还支持正则表达。以下是几个例子: root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr db_name /tmp (把数据库目录 db_name 拷贝到 /tmp 下)root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr db_name_1 . db_name_n /tmproot#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr db_name./regex/ /tmpperldoc /usr/local/mysql/bin/mysqlhotcopy2.2 还原mysqlhotcopy 备份出来的是整个数据库目录,如下例: root#cp -rf db_name /usr/local/mysql/data/root#chown -R nobody:nobody /usr/local/mysql/data/ (将 db_name 目录的属主改成 mysqld 运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 红色经典回顾:传承革命精神小学主题班会课件
- 诚实守信教育:做品德高尚的好学生小学主题班会课件
- 围产保健竞赛试题及答案
- 行动抵制校园暴力共建和谐校园小学主题班会课件
- 2025-2030行李车行业专利技术布局与创新竞争力评估
- 建筑项目成本控制与工程管理指南
- 阳光心态迎接挑战小学三年级主题班会课件
- 仓库空间不足通知函(6篇范文)
- 新生儿科血液透析管路血液分层应急疏散预案演练脚本
- 劳动实践课:亲手做中的应用小学主题班会课件
- 云南大理西电新源开发有限责任公司招聘笔试题库2026
- GB/T 12957-2026用于水泥混合材的工业废渣活性试验方法
- 2026年人教鄂教版(新教材)小学科学三年级下册期末学情测试卷及答案(2套)
- 2026人教版小学四年级下册语文全单元课文易错考点梳理讲义
- 2026春小学信息技术三年级下册期末练习卷(清华版贵州)附参考答案
- 2026年人教版(新教材)初中信息科技七年级全一册第二学期期末综合测试卷及答案
- 2026内蒙古医药行业市场现状供需分析及投资评估规划分析研究报告
- 中投顾问:2026年中国未来产业深度分析报告
- 《煤矿重大事故隐患判定标准》(2026版)解读
- 2026年高中历史学业水平合格性考试知识点总结(复习必背)
- 2026年7月浙江高中学业水平合格考生物试卷试题(含答案详解)
评论
0/150
提交评论