●添加用户
GRANT ALL PRIVILEGES ON *.* TO monty@"%" IDENTIFIED BY 'something' WITH GRANT OPTION;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON expenses.* TO custom@whitehouse.gov
●用户本机不能登陆,但远程可以
比如,添加了一个用户"user1@%",结果远程可以登陆,本地就不行。很可能是本地是用匿名用户登陆,所以最好顺便再添加一个"user1@localhost"用户来解决这个问题。
●忘记root用户的密码
1、启动数据库服务:
mysqld --skip-grant-tables
2、修改密码:
mysqladmin -u root flush-privileges password "newpassword"
3、关闭数据库,再正常启动。
●某些字段相同的记录只取第一条
直接用group by就搞定,例如,表t有字段a,b,c,对于表中所有记录,当a与b相同,但c不一定相同时,只取出第一条,查询语句如下:
select * from t group by a,b
●联表更新记录
update table t1, table t2 set t1.f1 = t2.f2 * 2 where t1.id = t2.tid
●5.5版本设置字符集
my.cnf文件, 在[mysqld]项中添加character_set_server=utf8(注意,不是default-character-server=utf8或default-character-set=utf8)
●查看当前用户: select user();
●查看表锁情况:show status like "table_lock%";
其中,Table_locks_immediate表示不经过等待立即获取表锁的次数;Table_locks_waited 表示学要经过等待才能获取表所的次数。
● 锁表:LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE} [, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}]。解锁:UNLOCK TABLES;
● 查看连接进程状态:
show processlist;
或者,用用更详细的:
SELECT * FROM information_schema.processlist t WHERE t.DB=数据库 AND state <> '';
●删除语句中不能用表别名
delete from table1 t where t.id=3 --[b]这样的语句是不行的[/b]
●MySQL自动备份和手工恢复
·备份
set hour_str=%time:~0,2%
if "%hour_str:~0,1%"==" " set "hour_str=0%hour_str:~1%"
set fileName=%date:~0,4%-%date:~5,2%-%date:~8,2%_%hour_str%%time:~3,2%%time:~6,2%
D:
cd D:\autobak\
mysqldump 数据库名(改我) -u root -p密码(改我) >%fileName%.sql
jar cf %fileName%.zip %fileName%.sql
del %fileName%.sql
·恢复
mysql -u root -p密码 数据库名 < xxx.sql
GRANT ALL PRIVILEGES ON *.* TO monty@"%" IDENTIFIED BY 'something' WITH GRANT OPTION;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON expenses.* TO custom@whitehouse.gov
●用户本机不能登陆,但远程可以
比如,添加了一个用户"user1@%",结果远程可以登陆,本地就不行。很可能是本地是用匿名用户登陆,所以最好顺便再添加一个"user1@localhost"用户来解决这个问题。
●忘记root用户的密码
1、启动数据库服务:
mysqld --skip-grant-tables
2、修改密码:
mysqladmin -u root flush-privileges password "newpassword"
3、关闭数据库,再正常启动。
●某些字段相同的记录只取第一条
直接用group by就搞定,例如,表t有字段a,b,c,对于表中所有记录,当a与b相同,但c不一定相同时,只取出第一条,查询语句如下:
select * from t group by a,b
●联表更新记录
update table t1, table t2 set t1.f1 = t2.f2 * 2 where t1.id = t2.tid
●5.5版本设置字符集
my.cnf文件, 在[mysqld]项中添加character_set_server=utf8(注意,不是default-character-server=utf8或default-character-set=utf8)
●查看当前用户: select user();
●查看表锁情况:show status like "table_lock%";
其中,Table_locks_immediate表示不经过等待立即获取表锁的次数;Table_locks_waited 表示学要经过等待才能获取表所的次数。
● 锁表:LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE} [, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}]。解锁:UNLOCK TABLES;
● 查看连接进程状态:
show processlist;
或者,用用更详细的:
SELECT * FROM information_schema.processlist t WHERE t.DB=数据库 AND state <> '';
●删除语句中不能用表别名
delete from table1 t where t.id=3 --[b]这样的语句是不行的[/b]
●MySQL自动备份和手工恢复
·备份
set hour_str=%time:~0,2%
if "%hour_str:~0,1%"==" " set "hour_str=0%hour_str:~1%"
set fileName=%date:~0,4%-%date:~5,2%-%date:~8,2%_%hour_str%%time:~3,2%%time:~6,2%
D:
cd D:\autobak\
mysqldump 数据库名(改我) -u root -p密码(改我) >%fileName%.sql
jar cf %fileName%.zip %fileName%.sql
del %fileName%.sql
·恢复
mysql -u root -p密码 数据库名 < xxx.sql