rant可以%匹配
grant all privileges *.* to 'root'@'10.0.0.*' identified by 'admin'
grant all privileges *.* to 'root'@'10.0.0.0/255.255.255.0' identified by 'admin'
flush privileges;
mysql用户可以授权的权限有哪些
mysql> help revoke;
Name: 'REVOKE'
Description:
Syntax:
REVOKE
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
FROM user [, user] ...
REVOKE ALL PRIVILEGES, GRANT OPTION
FROM user [, user] ...
REVOKE PROXY ON user
FROM user [, user] ...
mysql> show grants for test02@localhost ;
+---------------------------------------------------------------------------------------------------------------+
| Grants for test02@localhost |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test02'@'localhost' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441' |
| GRANT ALL PRIVILEGES ON `test`.* TO 'test02'@'localhost' |
+---------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql> REVOKE INSERT ON test.* FROM 'test02'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for test02@localhost ;
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for test02@localhost |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test02'@'localhost' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441' |
| GRANT SELECT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `test`.* TO 'test02'@'localhost' |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql -uroot -padmin -e "show grants for test02@localhost";
企业环境授权
GRANT SELECT, UPDATE, DELETE *.* to 'root'@'10.0.0.*' identified by 'admin'
mysql> use tt;
Database changed
mysql> select database();
+------------+
| database() |
+------------+
’| tt |‘
+------------+
1 row in set (0.00 sec)
mysql>
mysql> create table student(
-> id int(4) not null,
-> name char(40) not null,
-> age tinyint(2) not null default '0',
-> dept varchar(16) default null
-> );
Query OK, 0 rows affected (0.07 sec)
mysql> show create table student;
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
`id` int(4) NOT NULL,
`name` char(40) NOT NULL,
`age` tinyint(2) NOT NULL DEFAULT '0',
`dept` varchar(16) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
5.1之前默认为myisam 5.5之后为innodb
mysql> desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(4) | NO | | NULL | |
| name | char(40) | NO | | NULL | |
| age | tinyint(2) | NO | | 0 | |
| dept | varchar(16) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
mysql> show columns from student;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(4) | NO | | NULL | |
| name | char(40) | NO | | NULL | |
| age | tinyint(2) | NO | | 0 | |
| dept | varchar(16) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
为表的字段建立索引
创建主键索引 列的内容唯一 主键查询最快
create table student(
id int(4) not null auto_increment,
name char(40) not null,
age tinyint(2) not null default '0',
dept varchar(16) default null,
primary key(id),
key index_name(name)
);
mysql> drop table student;
Query OK, 0 rows affected (0.05 sec)
mysql> create table student(
-> id int(4) not null auto_increment,
-> name char(40) not null,
-> age tinyint(2) not null default '0',
-> dept varchar(16) default null,
-> primary key(id),
-> key index_name(name)
-> );
Query OK, 0 rows affected (0.10 sec)
mysql> desc student;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(4) | NO | PRI | NULL | auto_increment |
| name | char(40) | NO | MUL | NULL | |
| age | tinyint(2) | NO | | 0 | |
| dept | varchar(16) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
建表后通过alter 命令增加主键索引主键不能重复创建
alter table student drop primary key id ;
alter table student change id id int primary key auto_increment;
alter table student drop index index_name;
alter table student add index index_dept(dept)
对字段的前n个字符创建普通索引
create inde index_name on test(name(8))前n个字符基本唯一
mysql> show index from student;
+---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| student | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | | |
| student | 1 | index_name | 1 | name | A | 0 | NULL | NULL | | BTREE | | |
+---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.07 sec)
联合索引
create index ind_name_dept on student (name,dept)
mysql> create index ind_name_dept on student (name,dept)
-> ;
Query OK, 0 rows affected (0.09 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show index from student;
+---------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| student | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | | |
| student | 1 | index_name | 1 | name | A | 0 | NULL | NULL | | BTREE | | |
| student | 1 | ind_name_dept | 1 | name | A | 0 | NULL | NULL | | BTREE | | |
| student | 1 | ind_name_dept | 2 | dept | A | 0 | NULL | NULL | YES | BTREE | | |
+---------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
4 rows in set (0.00 sec)
drop index ind_name_dept on student
create index ind_name_dept on student (name(8),dept)前缀特效index(a,b,c) a,ab,abc可以走索引
更具多个列创建联合索引
create index ind_name_dept on student (name(8),dept(10))
drop index ind_name_dept on index
创建唯一非主键索引
create unique index index_age on student(age)
创建唯一索引
索引列的创建及其生效条件
1可以加快速度,但占用系统空间,更新数据库时还需维护索引数据,因此索引是一把双刃剑,并不是越多越好,列入数十到几百行的小表上无需建立索引,写频繁读少的业务要少建立索引
2到底哪些列需要建立索引呢
select user ,host from mysdl.user where user=索引一定要创建在条件列,而不是select 出来的数据列,另外我们要尽量在唯一值多的大表上建立索引
1要在表的列上创建索引
2索引会加快查询速度,但会音响跟新速度
3索引不是越多越好,要在频繁查询的where 的条件上创建索引
4小表或唯一值极少的列上不建索引,要在不同大表以及不同的列上创建索引