Mysql中经常使用操做(密码破解、数据库备份、数据库导入、受权)

修改表的编码方式:

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。 mysql

2.MySQL 忘记口令的解决办法 sql

若是 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服务。rest

而后打开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

索引操做

一、建立索引(PRIMARY KEY,INDEX,UNIQUE)code

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);

二、删除索引(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);

三、重建索引

mysql> REPAIR TABLE 表名 QUICK;

四、查看某个数据表的索引

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 程度从强到弱
一、drop table tb 
drop将表格直接删除,没有办法找回
二、truncate table  tablename
truncate 删除表中的全部数据,不能与where一块儿使用
三、delete from tb (where)
delete 删除表中的数据(可制定某一行)
truncate和delete的区别
① 事务:truncate是不能够rollback的,可是delete是能够rollback的;
缘由:truncate删除整表数据(ddl语句,隐式提交),delete是一行一行的删除,能够rollback
② 效果:truncate删除后将重置索引(自增加id从零开始) ,delete不会删除索引 
③ truncate 不能触发任何Delete触发器。
④ delete 删除能够返回行数
相关文章
相关标签/搜索