Mysql语句

删除重复记录

删除重复记录个数是2的:

delete list_table from list_table,(select max(id) as id from list_table group by href having count(*)>1) as t2 where list_table.id=t2.id

去掉字段中的换行,制表符

\n也可以是用char(10)代替,\r可以用char(13)代替

update list_table set briefDesc = replace(briefDesc ,"\r\n","")
update list_table set briefDesc = replace(briefDesc ,"\t","")
UPDATE list_table SET briefDesc = REPLACE(REPLACE(briefDesc, CHAR(10), ''), CHAR(13),'')

重置auto_increment字段的起始值

有些表只用来统计,其id不会作为外键,所以可以自由修改它的id。
通过命令ALTER TABLE share_table AUTO_INCREMENT=605 或通过phpMyAdmin操作表选项修改,都不成功。
后来先去掉id字段的auto_increment属性,再添加上它,就会自动从最大的id开始了。

用选择的数据创建临时表

创建临时表可以简化一些复杂的sql语句

create table temp_table SELECT articleId,count(*) as count FROM `share_table` group by articleId
insert into temp_table SELECT articleId,count(*) as count FROM `share_table` group by articleId

联合update

UPDATE list_table A, temp_table B
SET A.shareTimes=B.count
WHERE A.id=B.articleId

Could not connect: Access denied for user ‘root’@’localhost’ (using password: YES)

修改root密码

update user set password=password('abc') where user='root' and host='127.0.0.1'

重启mysql:service mysqld restart

查询index

 show index from list_table
 alter table drop index xxx;

表 is marked as crashed and should be repaired

在phpmyadmin中选中库再在表的列表中选择对应表名,再选择选中项中的修复表,执行修复。可能会遇到需要修改表文件的组和拥有者。

修改数据库密码

进入mysql库

UPDATE user SET password=PASSWORD('123456') WHERE user='root'

Linux环境下修改MySQL端口

vi /alidata/server/mysql/my.cnf
修改port=3306
service mysql restart

授权访问者

#命令行登录
本地:mysql -uroot -p 
本地:mysql -u root -p, 回车后输入密码; 也可以p后不加空格,直接加密码,回车就登录了。
远程:mysql -hxx.xx.xx.xx -P 3306 -u -pxxx

#授权允许从ip为192.168.1.6的主机以root用户和password1作为密码,连接到mysql服务器。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.6' IDENTIFIED BY 'password1' WITH GRANT OPTION;
#修改生效并退出
FLUSH PRIVILEGES;
EXIT;

授权ip段,可以使用%,例如:192.168.1.%。

修改字段部分内容

update `list_table_test` set `thumbnailUrl`=concat('http://pic.cnblogs.com',substr(`thumbnailUrl`,18)) WHERE `thumbnailUrl` like 'http://www.cnblogs.com/pic.cnblogs.com/face/%'

SELECT replace(replace(href,'http://so.brogrammer.org/view_',''),'.aspx','') FROM `poetry_table` WHERE href like 'http://so.brogrammer.org/view_%'

工具

Navicat报1045 Access denied for user ‘root’@’x.x.x.x’,using password:No错误。
当using password:No时,可以尝试编辑密码后重新输入密码。
当using password:Yes时,可能是root帐户默认不开放远程访问权限。
1.修改配置参数
/etc/my.cnf,在[mysqld] 下面加上: skip-grant-tables 配置使跳跃权限表的限制,不用验证密码,直接登录。
2.重启mysql使得参数生效:
service mysqld restart
3.修改密码
mysql -u root -p 在提示输入密码时直接回车。
use mysql;
update user set password=PASSWORD(“123456”) where user=’root’;
4.去掉skip-grant-tables配置
5.重启数据库
service mysqld restart
6.登录测试
mysql -u root -p 123456

发表评论