/etc/init.d/mysql stopThen update the user tablemysqld –skip-grant-tables –skip-networking &mysql mysqlUPDATE user SET password=PASSWORD(’yourrootpassword’) WHERE User=”root” AND Host=”localhost”;quit/etc/init.d/mysql restart
对于大多数web应用来说,数据库都是一个十分基础性的部分。如果你在使用PHP,那么你很可能也在使用MySQL—LAMP系列中举足轻重的一份子。对于很多新手们来说,使用PHP可以在短短几个小时之内轻松地写出具有特定功能的代码。但是,构建一个稳定可靠的数据库却需要花上一些时日和相关技能。下面列举了我曾经犯过的最严重的11个MySQL相关的错误(有些同样也反映在其他语言/数据库的使用上)。。。1、使用MyISAM而不是InnoDBMySQL有很多数据库引擎,但是你最可能碰到的就是MyISAM和InnoDB。MySQL默认使用的是MyISAM。但是,很多情况下这都是一个很糟糕的选择,除非你在创建一个非常简单抑或实验性的数据库。外键约束或者事务处理对于数据完整性是非常重要的,但MyISAM都不支持这些。另外,当有一条记录在插入或者更新时,整个数据表都被锁定了,当使用量增加的时候这会产生非常差的运行效率。结论很简单:使用InnoDB。2、使用PHP的mysql函数PHP自产生之日就提供了MySQL库函数(or near as makes no difference)。很多应用仍然在使用类似mysql_connect、mysql_query、mysql_fetch_assoc等的函数,尽管PHP手册上说:如果你在使用MySQL v4.1.3或者更新版本,强烈推荐使用您使用mysqli扩展。mysqli(MySQL的加强版扩展)有以下几个优点:可选的面向对象接口 prepared表达式,这有利于阻止SQL注入攻击,还能提高性能 支持更多的表达式和事务处理 另外,如果你想
原因分析:引起MySQL不能创建自动增加的字段的原因是在MySQL5.0.2版本中的The Server SQL Mode 中新加了几种 sql_mode,并且在sql的my.ini文件中的sql-mode 默认增加了其中的二种,一个是STRICT_TRANS_TABLES,就是导致auto_increament失败的mode,这个sql_mode主要用于 当一个值不能插入到表中是,则产生一个错误而不是一个警告并终止会话。解决办法:删除或注释掉sql_mode.重启mysql.将my.ini中的:# Set the SQL mode to strict sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 改为: # Set the SQL mode to strict[separator] #sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
由于这个数据库服务器存放的数据库比较多且都是小数据库,所以最初的时候是运行在windows服务器上的。前一段时间由于机房服务器要做调整,于是我便在一个夜深人静的夜晚对数据库进行的迁移及前台应用程序进行了调整,调整结束后测试应用均可以正常访问后我便离去了。周一刚上班就收到反馈:网站后台发布文章报如下错误:
问:怎么快速的从sql文件中恢复数据库数据到指定数据库? 答: 1,windows系统下恢复数据库数据: 运行-->cmd-->执行下面命令: mysql -uroot -p123456 bbs < F:\mysql_20101023_14\20101023_14\20101023_14.sql 2,linux系统下恢复数据库数据: mysql -u root -p 回车 输入密码,回车 use 数据库名,回车 source 数据源sql文件
SELECT * FROM `phpup_user` WHERE date( updatetime ) >= CURDATE( ) LIMIT 0 , 50
insert into a select * from a where id=1 没有主键时候才可以。。有主键时候就要写上列: insert into a(a,b,c) select a,b,c from a where id=1 对库里某一记录行进行复制,只修改其中的主键,其它数据都不变,如何实现? 一下方法测试可行: insert into sotest (so_name,so_sex) select so_name,so_sex from sotest where so_id=1 也就是不能有values这个关键字。 如果要自定义某些字段的值怎么办呢,看下面: 第一种(直接替换):insert into sotest (so_uname,so_sex) select 'alan',so_sex from sotest where so_id=1,这样就把so_uname的值直接指定为'alan'了。 第二种(追加):insert into sotest (so_uname,so_sex) select so_uname+'alan',so_sex from sotest where so_id=1,这样就把so_uname的新值编程旧的so_un
昨天: SELECT * from 表名 where to_days(时间字段名) = to_days(now()); 7天: SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) – TO_DAYS( 时间字段名) <= 1 近30天: SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名) 本月: SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名) 上一月: SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, ‘%Y%m’ ) = DATE_FORMAT( CURDATE( ) , ‘%Y%m’ ) SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , ‘%Y%m’ ) , date_format( 时间字段名, ‘%Y%m’ ) ) =1 查询本周记录 select * from ht_invoice_information where WEEKOFYEAR(create_date)=WEEKOFYEAR(NOW()); #查询上周记录 select * from ht_invoice_information where create_date>=date_add(n
几条语句用起来爽歪歪: 1.复制表结构以及数据 create table 新表 select * from 旧表; 2.只复制表结构 create table 新表 select * from 旧
允许mysql远程访问,可以使用以下三种方式: a、改表。 mysql -u root –p