author:skate
time:2011/12/19

 

mysql学习笔记

1.mysql的基本使用命令
2.mysql的备份与恢复
3.mysql的服务器参数优化
4.mysql的sql优化
5.mysql的不同存储引擎的优化
6.mysql的高扩展、高可用

 

1.mysql的基本使用命令

show命令的用法。 1. show tables或show tables from database_name; --显示当前数据库或指定数据库中所有表的名称。
2. show databases; --显示mysql中所有数据库的名称。
   SELECT DATABASE(); --显示当前使用的数据库
   select user();  --显示当前用户
3. show columns from table_name from database_name;
  或show columns from database_name.table_name;
  或desc table_name;  -- 显示表中列名称。
4. show grants for user_name;
   或show grants; -- 显示一个用户的权限,显示结果类似于grant 命令。
5. show index from table_name; -- 显示表的索引。
6. show status;
   或 show global status;
   或 show global status like '%name%';  -- 显示一些系统特定资源的信息,例如,正在运行的线程数量。
   
7. show variables;
   或 show variables like '%name%'; -- 显示系统变量的名称和值。
8. show processlist; -- 显示系统中正在运行的所有进程,也就是当前正在执行的查询。
             大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,
    就可以查看所有人的进程,包括密码。
 
10. show privileges; -- 显示服务器所支持的不同权限。
11. show create database database_name; -- 显示create database 语句是否能够创建指定的数据库。
12. show create table table_name; -- 显示create database 语句是否能够创建指定的数据库。
13. show engines; -- 显示安装以后可用的存储引擎和默认引擎。
14. show innodb status; -- 显示innoDB存储引擎的状态。
15. show logs; -- 显示BDB存储引擎的日志。
16. show warnings; -- 显示最后一个执行的语句所产生的错误、警告和通知。
17. show errors; -- 只显示最后一个执行语句所产生的错误。

 

常用sql语句SQL分类:
DDL—数据定义语言(Create,Alter,Drop,DECLARE)
DML—数据操纵语言(Select,Delete,Update,Insert)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)


1、说明:创建数据库
Create DATABASE database-name
2、说明:删除数据库
drop database dbname

3.create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

根据已有的表创建新表结构:
create table newtable like oldtable;
根据已有的表创建新表结构和数据:
create table tab1 as select * from mysql.db;
删除新表
drop table tabname
4.表增加、编辑、删除列
alter table tab1 add column col_name col_type;
alter table tab1 modify column col_name col_type;
alter table tab1 drop column col_name;
5.添加、删除主键
alter table tab1 add priamry key(col1);
alter table tab1 drop priamry key;
6.创建、删除索引
create [unique] index idx_col1 on tab1(col1);
alter table tab1 drop index idx_col1;
7.创建、删除视图
create view v_aa * select * from tab1;
drop view v_aa;
8.删除表的数据
truncate table tab1;

添加有本地访问权限的用户
grant all privileges on *.* to 'skate'@'localhost' identified by 'skate'with grant option;
添加有远程访问权限的用户
grant all privileges on *.* to 'skate_r'@'%' identified by 'skate_r' with grant option;

删除用户
drop user skate@localhost; (@不加默认为“%”)权限回收
revoke delete on skatedb.* from skate@'localhost';

创建用户,授权DML
grant select,insert,update,delete on *.* to 'skate'@'%' identified by 'skate' with grant option;

限制用户资源
mysql> grant all on test.* to 'skate_s'@'localhost'     -> identified by 'skate_s'
    -> with max_queries_per_hour 20
    -> max_updates_per_hour 10
    -> max_connections_per_hour 5
    -> max_user_connections 2;

在mysql里执行语句:
mysql> SET PASSWORD FOR 'skate_s'@'%'= PASSWORD('skate');
如果只是更改自己的密码,则:
mysql> SET PASSWORD = PASSWORD('password');
在全局级别使用GRANT USAGE语句(在*.*)来指定某个账户的密码:
mysql> GRANT USAGE ON *.* TO 'skate'@'%' IDENTIFIED BY 'skate';
或直接修改MySQL库表:
mysql> UPDATE mysql.user SET Password = PASSWORD('skate') WHERE Host = '%' AND User = 'skate';
mysql> FLUSH PRIVILEGES;

修改root密码:
mysql> update mysql.user set password=password('passw0rd') where user='root';
mysql> FLUSH PRIVILEGES;

使用mysqladmin:

[root@skate tmp]# mysqladmin -uskate -hlocalhost -p password 'skate4';

数据加密

mysql> select  password('skate');
 +-------------------+
 | password('skate') |
 +-------------------+
 | 194f4666458c9d3e  | 
 +-------------------+
 1 row in set (0.00 sec)mysql> select md5('skate');
 +----------------------------------+
 | md5('skate')                     |
 +----------------------------------+
 | 7e4f29b77429202024e916268abc41ba | 
 +----------------------------------+
 1 row in set (0.01 sec)mysql> select sha1('skate');
 +------------------------------------------+
 | sha1('skate')                            |
 +------------------------------------------+
 | 71701bcaa4d79fa39647c35a270148ed7ed5ac2e | 
 +------------------------------------------+
 1 row in set (0.00 sec)

 

授权精确到列
mysql> grant select(col1) on test.tab1 to skate@localhost;

 

 

 

-----end------