Heim > Datenbank > MySQL-Tutorial > MySQL详细的操作_MySQL

MySQL详细的操作_MySQL

WBOY
Freigeben: 2016-06-01 13:45:16
Original
962 Leute haben es durchsucht

bitsCN.com

创建数据库luowei
mysql> CREATE DATABASE luowei;

使用数据库
mysql> use luowei

创建表study
mysql> CREATE TABLE study ( ID bigint(20) NOT NULL AUTO_INCREMENT UNIQUE,  Name varchar(255) NOT NULL, Age int(10),Gender enum('F','M')  DEFAULT 'M');

查询表study;
mysql> SELECT * FROM study;

查看表的结构:
mysql> DESC study;
+--------+---------------+------+-----+---------+----------------+
| Field  | Type          | Null | Key | Default | Extra          |
+--------+---------------+------+-----+---------+----------------+
| ID     | bigint(20)    | NO   | PRI | NULL    | auto_increment |
| Name   | varchar(255)  | NO   |     | NULL    |                |
| Age    | int(10)       | YES  |     | NULL    |                |
| Gender | enum('F','M') | YES  |     | M       |                |
+--------+---------------+------+-----+---------+----------------+

插入数据;
mysql> INSERT INTO study (Name) VALUE ('luowei'); //单个插入
mysql> INSERT INTO study (Name) VALUE ('Qi'),('Ro'),('RQ'); //批量插入
mysql> INSERT INTO study SET Name='Hua';  //使用SET插入
mysql> SELECT * FROM study;
+----+--------+------+--------+
| ID | Name   | Age  | Gender |
+----+--------+------+--------+
|  1 | luowei | NULL | M      |
|  2 | Qi     | NULL | M      |
|  3 | Ro     | NULL | M      |
|  4 | RQ     | NULL | M      |
|  5 | Hua    | NULL | M      |
+----+--------+------+--------+
5 rows in set (0.00 sec)
这是插入数据后的一个简单的表的内容

修改表的数据
mysql> UPDATE study SET Gender='F' WHERE ID=2; //把ID=2的Gender改为F
mysql> UPDATE study SET Gender='F' WHERE ID IN (4,5);//批量处理
mysql> SELECT * FROM study;
+----+--------+------+--------+
| ID | Name   | Age  | Gender |
+----+--------+------+--------+
|  1 | luowei | NULL | M      |
|  2 | Qi     | NULL | F      |
|  3 | Ro     | NULL | M      |
|  4 | RQ     | NULL | F      |
|  5 | Hua    | NULL | F      |
+----+--------+------+--------+

删除表中的数据
mysql> DELETE FROM study WHERE ID=5;//删除指定的行
mysql> SELECT * FROM study;
+----+--------+------+--------+
| ID | Name   | Age  | Gender |
+----+--------+------+--------+
|  1 | luowei | NULL | M      |
|  2 | Qi     | NULL | F      |
|  3 | Ro     | NULL | M      |
|  4 | RQ     | NULL | F      |
+----+--------+------+--------+
但是这个时候如果我们在再次插入的话ID号会从原来删除的编号增加
mysql> SELECT LAST_INSERT_ID();//显示上次插入的是第几个
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                5 |
+------------------+
mysql> INSERT INTO study (Name) VALUE ('aQ');
mysql> SELECT * FROM study;
+----+--------+------+--------+
| ID | Name   | Age  | Gender |
+----+--------+------+--------+
|  1 | luowei | NULL | M      |
|  2 | Qi     | NULL | F      |
|  3 | Ro     | NULL | M      |
|  4 | RQ     | NULL | F      |
|  6 | aQ     | NULL | M      |
+----+--------+------+--------+
看到了吧,不是依次增长的,而是有间隔,现在我们在删除了ID为6的行,然后插入设置他的ID为5,接着再自动插入;
mysql> DELETE FROM study WHERE ID=6;
mysql> INSERT INTO study SET ID=5,Name='pk';
mysql> INSERT INTO study (Name) VALUE ('jk');
mysql> SELECT * FROM study;
+----+--------+------+--------+
| ID | Name   | Age  | Gender |
+----+--------+------+--------+
|  1 | luowei | NULL | M      |
|  2 | Qi     | NULL | F      |
|  3 | Ro     | NULL | M      |
|  4 | RQ     | NULL | F      |
|  5 | pk     | NULL | M      |
|  7 | jk     | NULL | M      |
+----+--------+------+--------+
可以看出还是不会按照我们的意思让他接着自动增长,这个时候我们可以通过设置,让他重新按照我们设置的为起点自动增长
mysql> DELETE FROM study WHERE ID=7;
mysql> ALTER TABLE study AUTO_INCREMENT=5;//设置自动增长的起点
mysql> INSERT INTO study (Name) VALUE ('jk');
mysql> INSERT INTO study (Name) VALUE ('OL');
mysql> SELECT * FROM study;
+----+--------+------+--------+
| ID | Name   | Age  | Gender |
+----+--------+------+--------+
|  1 | luowei | NULL | M      |
|  2 | Qi     | NULL | F      |
|  3 | Ro     | NULL | M      |
|  4 | RQ     | NULL | F      |
|  5 | pk     | NULL | M      |
|  6 | jk     | NULL | M      |
|  7 | OL     | NULL | M      |
+----+--------+------+--------+
又OK了,我估计QQ在设置QQ号的时候也是通过这种方式,保留小于5位的QQ号,所有大家用的都是7位以上的(题外话,呵呵)。

修改表结构
如果想插入一个新的字段,可以使用ALTER来修改
mysql> DESC study;//原本表的结构
+--------+---------------+------+-----+---------+----------------+
| Field  | Type          | Null | Key | Default | Extra          |
+--------+---------------+------+-----+---------+----------------+
| ID     | bigint(20)    | NO   | PRI | NULL    | auto_increment |
| Name   | varchar(255)  | NO   |     | NULL    |                |
| Age    | int(10)       | YES  |     | NULL    |                |
| Gender | enum('F','M') | YES  |     | M       |                |
+--------+---------------+------+-----+---------+----------------+
mysql> ALTER TABLE study ADD Work INT ;
mysql> DESC study;
+--------+---------------+------+-----+---------+----------------+
| Field  | Type          | Null | Key | Default | Extra          |
+--------+---------------+------+-----+---------+----------------+
| ID     | bigint(20)    | NO   | PRI | NULL    | auto_increment |
| Name   | varchar(255)  | NO   |     | NULL    |                |
| Age    | int(10)       | YES  |     | NULL    |                |
| Gender | enum('F','M') | YES  |     | M       |                |
| Work   | int(11)       | YES  |     | NULL    |                |
+--------+---------------+------+-----+---------+----------------+
默认插入最后一行,如果想插入指定的行,可以使用AFTER,FIRST等参数
mysql> ALTER TABLE study ADD Master VARCHAR(30) AFTER Gender;
mysql> DESC study;
+--------+---------------+------+-----+---------+----------------+
| Field  | Type          | Null | Key | Default | Extra          |
+--------+---------------+------+-----+---------+----------------+
| ID     | bigint(20)    | NO   | PRI | NULL    | auto_increment |
| Name   | varchar(255)  | NO   |     | NULL    |                |
| Age    | int(10)       | YES  |     | NULL    |                |
| Gender | enum('F','M') | YES  |     | M       |                |
| Master | varchar(30)   | YES  |     | NULL    |                |
| Work   | int(11)       | YES  |     | NULL    |                |
+--------+---------------+------+-----+---------+----------------+
这就把新插入的字段放在了Gender的后面了
如果我们想把原来的表中字段的名字改一下,比如我想把Work改成work
mysql> ALTER TABLE study CHANGE Work work INT;//修改表中的字段
mysql> DESC study;
+--------+---------------+------+-----+---------+----------------+
| Field  | Type          | Null | Key | Default | Extra          |
+--------+---------------+------+-----+---------+----------------+
| ID     | bigint(20)    | NO   | PRI | NULL    | auto_increment |
| Name   | varchar(255)  | NO   |     | NULL    |                |
| Age    | int(10)       | YES  |     | NULL    |                |
| Gender | enum('F','M') | YES  |     | M       |                |
| Master | varchar(30)   | YES  |     | NULL    |                |
| work   | int(11)       | YES  |     | NULL    |                |
+--------+---------------+------+-----+---------+----------------+
可以实现效果
当让还可以通过使用MODIFY来试下对表中字段的属性进行设置
mysql> ALTER TABLE study MODIFY work VARCHAR(30) NOT NULL ;
mysql> DESC study;
+--------+---------------+------+-----+---------+----------------+
| Field  | Type          | Null | Key | Default | Extra          |
+--------+---------------+------+-----+---------+----------------+
| ID     | bigint(20)    | NO   | PRI | NULL    | auto_increment |
| Name   | varchar(255)  | NO   |     | NULL    |                |
| Age    | int(10)       | YES  |     | NULL    |                |
| Gender | enum('F','M') | YES  |     | M       |                |
| Master | varchar(30)   | YES  |     | NULL    |                |
| work   | varchar(30)   | NO   |     | NULL    |                |
+--------+---------------+------+-----+---------+----------------+
但是如果你表中原本work中没有字段的话,会有warning,所以在你做的时候可以先添加数据,然后在修改。
随着发展,我发现后面的work这个字段没用了,想删除study表中的这个属性
mysql> ALTER TABLE study DROP work;
mysql> DESC study;
+--------+---------------+------+-----+---------+----------------+
| Field  | Type          | Null | Key | Default | Extra          |
+--------+---------------+------+-----+---------+----------------+
| ID     | bigint(20)    | NO   | PRI | NULL    | auto_increment |
| Name   | varchar(255)  | NO   |     | NULL    |                |
| Age    | int(10)       | YES  |     | NULL    |                |
| Gender | enum('F','M') | YES  |     | M       |                |
| Master | varchar(30)   | YES  |     | NULL    |                |
+--------+---------------+------+-----+---------+----------------+
当然如果我们表中有索引(目前),也可以使用DROP删除索引
mysql> SHOW INDEX FROM study;//查看表的索引
mysql> ALTER TABLE study ADD INDEX index_name(Name);//添加索引
也可以私用KEY(mysql> ALTER TABLE study ADD KEY index_name(Name);)
mysql> SHOW INDEX FROM study;
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name   | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| study |          0 | ID         |            1 | ID          | A         |           7 |     NULL | NULL   |      | BTREE      |         |
| study |          1 | index_name |            1 | Name        | A         |        NULL |     NULL | NULL   |      | BTREE      |         |
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
mysql> ALTER TABLE study DROP INDEX index_name;//删除索引
现在我觉得表明有点长,想换一个短的来方便下面的实验,当然在实际的过程中,我们应该见名知意
mysql> ALTER TABLE study RENAME TO st;//把表名从study改成st
mysql> SHOW TABLES;
+------------------+
| Tables_in_luowei |
+------------------+
| st               |
+------------------+
想查看当前的数据库可以使用一下命令
mysql> SELECT DATABASE();
mysql> SHOW TABLES;//显示当前数据库中的表

mysql> SELECT * FROM st;
+----+--------+------+--------+--------+
| ID | Name   | Age  | Gender | Master |
+----+--------+------+--------+--------+
|  1 | luowei | NULL | M      | NULL   |
|  2 | Qi     | NULL | F      | NULL   |
|  3 | Ro     | NULL | M      | NULL   |
|  4 | RQ     | NULL | F      | NULL   |
|  5 | pk     | NULL | M      | NULL   |
|  6 | jk     | NULL | M      | NULL   |
|  7 | OL     | NULL | M      | NULL   |
+----+--------+------+--------+--------+
这里我只有一个表,现在我修改一下表中的数据,把Master的类型改为INT,并添加一些数据在里面
mysql> ALTER TABLE st CHANGE MODIFY Master INT;
mysql> UPDATE st SET Master=1 WHERE ID=1;
mysql> UPDATE st SET Master=2 WHERE ID=2;
mysql> UPDATE st SET Master=3 WHERE ID=3;
mysql> UPDATE st SET Master=4 WHERE ID=4;
mysql> UPDATE st SET Master=7 WHERE ID=5;
mysql> UPDATE st SET Master=8 WHERE ID=6;
mysql> UPDATE st SET Master=5 WHERE ID=7;
mysql> SELECT * FROM st;
+----+--------+------+--------+--------+
| ID | Name   | Age  | Gender | Master |
+----+--------+------+--------+--------+
|  1 | luowei | NULL | M      |      1 |
|  2 | Qi     | NULL | F      |      2 |
|  3 | Ro     | NULL | M      |      3 |
|  4 | RQ     | NULL | F      |      4 |
|  5 | pk     | NULL | M      |      7 |
|  6 | jk     | NULL | M      |      8 |
|  7 | OL     | NULL | M      |      5 |
+----+--------+------+--------+--------+
现在表的基本情况如上所示。当然我们为了方便记录Master,使用是INT来标,其实Master是一个姓名,所以我们再建立一个新表mt,来记录Master的对应的关系
mysql> CREATE TABLE mt(
    -> id INT NOT NULL UNIQUE AUTO_INCREMENT ,
    -> name VARCHAR(30) NOT NULL );
mysql> INSERT INTO mt (name) VALUE ('A');
......
自己多插入几行,我这里就省略了
mysql> SELECT * FROM mt;
+----+------+
| id | name |
+----+------+
|  1 | A    |
|  2 | B    |
|  3 | C    |
|  4 | D    |
|  5 | E    |
|  6 | F    |
+----+------+
好了现在两个表准备好了,接下来我将做一下多表之间的查询
多表之间的查询可以分为:
  交叉查询:笛卡尔乘积,两表相乘;
  内连接:对称连接,就是显示两个表中都有的,一个表中如果没有,就不显示了;
  外连接:非对称连接
    左外连接:LEFT JOIN ON 左表中的都显示,右表中无的话显示为NULL
    右外连接:RIGHT JOIN ON 右表中的都显示,左表中无的话显示为NULL
  自连接:一个表中的一列建立在同张表的另一列;
  UNION:连接两个表;
接下来分别对上面的情况进行实验;
1.交叉查询:
mysql> SELECT * FROM st,mt;
42 rows in set (0.00 sec)//中间的数据就省略了,这里的结果就是两个表的行数相乘的结果;
2.内连接:
mysql> SELECT st.Name,mt.name FROM st,mt WHERE st.Master=mt.id;
+--------+------+
| Name   | name |
+--------+------+
| luowei | A    |
| Qi     | B    |
| Ro     | C    |
| RQ     | D    |
| OL     | E    |
+--------+------+
3.左外连接:
mysql> SELECT st.Name,mt.name FROM st LEFT JOIN  mt  ON st.Master=mt.id;
+--------+------+
| Name   | name |
+--------+------+
| luowei | A    |
| Qi     | B    |
| Ro     | C    |
| RQ     | D    |
| pk     | NULL |
| jk     | NULL |
| OL     | E    |
+--------+------+
这时候我们可以看到,凡是左表中有的,都显示了,右表中没有的都显示为NULL了;
4.右外连接:
mysql> SELECT st.Name,mt.name FROM st RIGHT JOIN  mt  ON st.Master=mt.id;
+--------+------+
| Name   | name |
+--------+------+
| luowei | A    |
| Qi     | B    |
| Ro     | C    |
| RQ     | D    |
| OL     | E    |
| NULL   | F    |
+--------+------+
5.自连接:
mysql> SELECT k1.Name,k2.Gender FROM st AS k1,st AS k2 WHERE k1.ID = k2.Master;
+--------+--------+
| Name   | Gender |
+--------+--------+
| luowei | M      |
| Qi     | F      |
| Ro     | M      |
| RQ     | F      |
| OL     | M      |
| pk     | M      |
+--------+--------+
6.UNION;
mysql> SELECT ID AS new_id,Name AS new_name FROM st UNION SELECT id AS new_id,name AS new_name FROM mt;
+--------+----------+
| new_id | new_name |
+--------+----------+
|      1 | luowei   |
|      2 | Qi       |
|      3 | Ro       |
|      4 | RQ       |
|      5 | pk       |
|      6 | jk       |
|      7 | OL       |
|      1 | A        |
|      2 | B        |
|      3 | C        |
|      4 | D        |
|      5 | E        |
|      6 | F        |
+--------+----------+
13 rows in set (0.00 sec)这样就把两个表连接到了一起了。

多表操作就到此了,接下来要说的是数据库中的视图,子查询,事务,同步的相关知识了;
我就以st这个表为基础:
mysql> SELECT * FROM st;
+----+--------+------+--------+--------+
| ID | Name   | Age  | Gender | Master |
+----+--------+------+--------+--------+
|  1 | luowei | NULL | M      |      1 |
|  2 | Qi     | NULL | F      |      2 |
|  3 | Ro     | NULL | M      |      3 |
|  4 | RQ     | NULL | F      |      4 |
|  5 | pk     | NULL | M      |      7 |
|  6 | jk     | NULL | M      |      8 |
|  7 | OL     | NULL | M      |      5 |
+----+--------+------+--------+--------+
视图:就是建立在基表上执行查询语句的一系列的虚表
创建视图:
mysql> CREATE VIEW view AS SELECT ID,Name,Gender FROM st;//创建一个查询显示ID,Name,Gender的视图;
mysql> SELECT * FROM view;
+----+--------+--------+
| ID | Name   | Gender |
+----+--------+--------+
|  1 | luowei | M      |
|  2 | Qi     | F      |
|  3 | Ro     | M      |
|  4 | RQ     | F      |
|  5 | pk     | M      |
|  6 | jk     | M      |
|  7 | OL     | M      |
+----+--------+--------+
删除视图可以使用
mysql> DROP VIEW view;
子查询语句:(其实MySQL的子查询支持的还不是很好)
mysql> SELECT * FROM view WHERE ID > 0;
我就借用刚建立的视图进行查询,其实这个是多此一举的做法,呵呵,只是演示一下效果,当让在工作中可能会遇到更多的问题的。

事务:transact
事务就是几个Sql语句要么都执行,要么都不执行,这样就防治一方执行,另一方没执行,从而产生虚拟的假象,比如A通过银行向B转账,如果这个时候A刚转出去,B那边的断电了(假设,其实这样的事出现的概率还是蛮小的,呵呵),所以等A和B见面之后,就说不清了,所以事务就是如果两个都没实现,就是A发送成功,B接受成功,才能算是真正的成功,所以这样就能避免不必要的损失。
接下来介绍一下事务隔离的级别:
1.读未提交 READ UNCOMMITED
2.读提交 READ COMMITED
3.可重读 REPEATABLE READ 默认
4.串行化 SERIABLIZABLE
从1-->4隔离级别依次增加,并发性依次降低
mysql> SHOW VARIABLES LIKE 'tx_isolation';//查看系统使用的默认的隔离级别
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| tx_isolation  | REPEATABLE-READ |
+---------------+-----------------+

但是如果我们的数据库使用的引擎是MyISAM的话,就不支持事务,查看数据库使用的引擎命令如下
mysql> SHOW ENGINES;或使用SHOW TABLE STATUS LIKE 'st';或使用SHOW TABLE STATUS ;都能查看
+------------+---------+----------------------------------------------------------------+
| Engine     | Support | Comment                                                        |
+------------+---------+----------------------------------------------------------------+
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      |
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     |
| BerkeleyDB | YES     | Supports transactions and page-level locking                   |
| BLACKHOLE  | NO      | /dev/null storage engine (anything you write to it disappears) |
| EXAMPLE    | NO      | Example storage engine                                         |
| ARCHIVE    | NO      | Archive storage engine                                         |
| CSV        | NO      | CSV storage engine                                             |
| ndbcluster | NO      | Clustered, fault-tolerant, memory-based tables                 |
| FEDERATED  | NO      | Federated MySQL storage engine                                 |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          |
| ISAM       | NO      | Obsolete storage engine                                        |
+------------+---------+----------------------------------------------------------------+
显示为DEFAULT的是默认使用的引擎,应为这个时候数据库不支持事务,为了演示事务的效果,我把mysql的引擎改为InnoDB ,使用如下命令:
mysql> SET SESSION storage_engine = InnoDB;
然后在这个引擎的基础上建立一个表
mysql> CREATE TABLE tt (
    -> tid INT UNIQUE NOT NULL AUTO_INCREMENT,
    -> tname VARCHAR(30) NOT NULL,
    -> tage INT);
插入数据如下图所示,当然你可以自己随便添加表中的数据
mysql> SELECT * FROM tt;
+-----+-------+------+
| tid | tname | tage |
+-----+-------+------+
|   1 | ser   | NULL |
|   2 | linux | NULL |
|   3 | php   | NULL |
+-----+-------+------+
查看当前表的存储引擎
mysql> SHOW TABLE STATUS LIKE 'tt';
显示的结果是InnoDB的引擎;
1.设置为READ UNCOMMITTED(读未提交)的级别
mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;//修改隔离级别为READ UNCONMMITED显示为REPEATABLE-READ
mysql> SHOW VARIABLES LIKE 'tx_isolation';
+---------------+------------------+
| Variable_name | Value            |
+---------------+------------------+
| tx_isolation  | READ-UNCOMMITTED |
+---------------+------------------+
这个级别下,如果两个事务同时进行,任何一方的改变,对方都能看到,因为我们在设置的时候采用的是SESSION,会话的模式,所以两个终端都要进行READ UNCOMMITTED设置

MySQL详细的操作_MySQL

所以这个的设置的并发性最好,但是受到的影响却是最大的
2.设置为READ COMMITED(读提交)级别
这个级别下,当其中的任意一个事务提交了,其他处于事务状态的就能同步到信息,如下图是没有提交之前的图,这个时候还不能看到

MySQL详细的操作_MySQL
 
如果B的事务提交了,再来看看这个结果,如下图所示:

MySQL详细的操作_MySQL

尽管A没有提交,但是也能看到信息了
3.设置为REPEATABLE READ(可重读)级别
如果设置为这个级别的话,两个同时进行的事务,相互不受影响,只用当两个事务都提交了才能看到所有变化的信息,否则,各自只能看到自己完成的
我现在打开两个终端A、B,同时进入事务
mysql> START TRANSACTION;//A进入事务状态
mysql> START TRANSACTION;//B进入事务状态
然后我在B事务状态下向表进行插入一行数据,然后在两个表中都查看,结果发现数据不一样,如下图所示:

MySQL详细的操作_MySQL

如果我现在把B的事务提交了,再在A、B上查看,发现只有B上的有新插入的一行,而A任然没有,如图所示:

MySQL详细的操作_MySQL

如果我现在把A的也提交了,在查看的话,两个就会出现数据同步了,如图所示:

MySQL详细的操作_MySQL

这就是REPEATABLE READ级别的效果,就是两个事务操作的时候相互不干扰,只有当两个事务都提交了,数据才会同步。
4.设置为SERIABLIZABLE级别
这个时候只有当前一个事务执行完成并提交了,下一个事务才开始,做了更加严格的限制,所以一般不做这样的级别限制
 
同步:(clock)
  通过锁机制来解决同步问题
  锁:
    共享锁(读锁):
    独占锁(写锁): 
    写锁的优先级高于读锁
    锁级别:
      表锁,行锁,页锁(内存空间)
    锁的实现:
      服务器级别的;只能实现表锁
      存储引擎级别的:可以实现行锁
    >LOCK TABLES tab_name READ;加锁
    >UNLOCK TABLES;释放锁
    (注意:如果在InnoDB中,定义时候并不生效,只有真正的事务开始,
     定义的锁才生效)
    降低粒度,可以更好的支持并发性,这样锁的颗粒就越小,类似行锁,锁的
    范围小一些。
 
MYSQL的用户管理:
创建用户
CREATE USER username@host
删除用户
DROP USER username@host
授权
GRANT PRIV_LIST ON db.table TO username@host [IDENTIFIED BY 'redhat'];
收回权限
REVOKE priv_list ON db.table FROM username@host;
WITH GRANT OPTION 同时把授权也一并授权给他
设置其使用的资源:
WITH MAX_QUERIES_PER_HOUT N;每个小时只能做N次查询
WITH MAX_UPDATES_PER_HOUT N每个小时只能做N次更新
WITH MAX_CONNECTIONS_PER_HOUT N  每个小时只能做N次连接
WITH MAX_USER_CONNECTIONS N 每个用户同时最大连接数
FLUSH USER_RESOURCES;
GRANT SELECT(name) ON db.table TO uername@host;字段级别的权限
执行存储过程的权限
GRANT EXECUTE ON XXXX TO username@host
 
 
忘记MySQL的密码:
方法1.重装数据库
方法2.
vim /etc/init.d/mysqld
先停止MySQL服务
#service mysqld stop
找到mysqld的二进制文件的位置,我这里就在/user/local/mysql/下
#/user/local/mysql/bin/mysqld_safe --skip-grant-tables --skip-networking & 后台运行安全模式
然后连接数据库
#mysql
>use mysql
>UPDATE user SET Password=PASSWORD('redhat') WHERE User='root' AND Host='localhost';
>UPDATE user SET Password=PASSWORD('redhat') WHERE User='root' AND Host='127.0.0.1';
#killall mysqqld
#service mysqld start
#mysql -uroot -p  登录
 
 
 
 
 
作者 “IT梦-齐-分享”

bitsCN.com
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage