修改表的编码方式:
ALTER TABLE `test` DEFAULT CHARACTER SET utf8;该命令用于将表test的编码方式改为utf8;
修改字段的编码方式:
ALTER TABLE `test` CHANGE `name` `name` VARCHAR(36) CHARACTER SET utf8 NOT NULL; 该命令用于将表test中name字段的编码方式改为utf8
更改表的引擎:
alter table `table_name` engine=innodb;
alter table `table_name` engine=myisam;
刷新权限:
flush privileges
授权:
创建test用户 并只能操作follow_db数据库:
CREATE USER 'test'@'%' IDENTIFIED BY 'pwd123';
GRANT SELECT, INSERT, UPDATE, REFERENCES, DELETE, CREATE, DROP, ALTER, INDEX, TRIGGER, CREATE VIEW, SHOW VIEW, EXECUTE, ALTER ROUTINE, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, EVENT ON `follow\_db`.* TO 'test'@'%';
GRANT GRANT OPTION ON `follow\_db`.* TO 'test'@'%';
Mysql密码修改/破解
1. mysqladmin -u root -p password mypasswd
输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。
2.MySQL 忘记口令的解决办法
如果 MySQL 正在运行,首先杀之:
killall -TERM mysqld。
启动 MySQL :
/usr/bin/mysqld_safe --skip-grant-tables &
就可以不需要密码就进入 MySQL 了。
然后就是
>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;
重新杀 MySQL ,用正常方法启动 MySQL 。
3.先停止mysql服务。
然后打开mysql配置文件/etc/my.cnf.
在【mysqld】下面添加一行代码:skip-grant-tables。
这行代码意思就是跳过跳过授权表,即是可以跳过密码验证直接进入数据库。
service mysqld restart //重启mysql数据库。假如不重启的话,不会生效。
mysql -uroot -p //此时直接回车,既可以进入数据库。
出现mysql>就说明你已经进入到mysql数据库里了。
进数据库后,
use mysql //选择mysql这个库,因为mysql的root密码存放在这个数据库里。
show tables //查看下mysql库里有哪些表,我们需要操作的用户名密码都在user表里。
desc user //查看下user表有哪些字段
更改root密码。
update user set password=password('123456') where user="root"; //用户选root,可以随便更改成任意密码,我这里设置的123456,password()是mysql密码加密的一个函数。
flush privileges; //刷新下密码,使更改的生效。
exit //退出数据库
重新登录
mysql -uroot -p //回车输入刚刚更改的密码,就能进去了。
然后再次进入配置文件vi /etc/my.cnf 把skip-grant-tables去掉。
Mysql数据库备份
mysqldump -uroot -p test >/test.sql 回车输入密码即可
Mysql 数据库导入(1)
Mysql -uroot -p test < /test.sql 回车输入密码即可
Mysql 数据库导入(2)
进入 MySQL 控制台(如:MySQL 5.5 Command Line Client),使用 source 命令执行
Mysql>source 【sql脚本文件的路径全名】 或 Mysql>\. 【sql脚本文件的路径全名】,示例:
source C:\test.sql 或者 \. C:\test.sql
索引操作
1、创建索引(PRIMARY KEY,INDEX,UNIQUE)
mysql>ALTER TABLE 表名 ADD INDEX index_name (column list);
mysql>ALTER TABLE 表名 ADD UNIQUE index_name (column list);
mysql>ALTER TABLE 表名 ADD PRIMARY KEY index_name (column list);
2、删除索引(PRIMARY KEY,INDEX,UNIQUE)
mysql>ALTER TABLE 表名 DROP INDEX index_name (column list);
mysql>ALTER TABLE 表名 DROP UNIQUE index_name (column list);
mysql>ALTER TABLE 表名 DROP PRIMARY KEY index_name (column list);
3、重建索引
mysql> REPAIR TABLE 表名 QUICK;
4、查看某个数据表的索引
mysql> SHOW INDEX FROM 表名;
查看表结构
Desc 表名
允许远程登录mysql
直接授权(推荐)
从任何主机上使用root用户,密码:youpassword(你的root密码)连接到mysql服务器:
# mysql -u root -proot
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
操作完后切记执行以下命令刷新权限
FLUSH PRIVILEGES
清空表
drop truncate delete 程度从强到弱
1、drop table tb
drop将表格直接删除,没有办法找回
2、truncate table tablename
truncate 删除表中的所有数据,不能与where一起使用
3、delete from tb (where)
delete 删除表中的数据(可制定某一行)
truncate和delete的区别
① 事务:truncate是不可以rollback的,但是delete是可以rollback的;
原因:truncate删除整表数据(ddl语句,隐式提交),delete是一行一行的删除,可以rollback
② 效果:truncate删除后将重置索引(自增长id从零开始) ,delete不会删除索引
③ truncate 不能触发任何Delete触发器。
④ delete 删除可以返回行数