dedecms mysql_MySQL详细的操作

创建数据库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设置

719189ecfda251abf46acca976ed2a61.png

所以这个的设置的并发性最好,但是受到的影响却是最大的

2.设置为READ COMMITED(读提交)级别

这个级别下,当其中的任意一个事务提交了,其他处于事务状态的就能同步到信息,如下图是没有提交之前的图,这个时候还不能看到

2825c3eb5b9d97914ad4039fb3ece365.png

如果B的事务提交了,再来看看这个结果,如下图所示:

07526f2e8dc14d00946faa05d9a3fe20.png

尽管A没有提交,但是也能看到信息了

3.设置为REPEATABLE READ(可重读)级别

如果设置为这个级别的话,两个同时进行的事务,相互不受影响,只用当两个事务都提交了才能看到所有变化的信息,否则,各自只能看到自己完成的

我现在打开两个终端A、B,同时进入事务

mysql> START TRANSACTION;//A进入事务状态

mysql> START TRANSACTION;//B进入事务状态

然后我在B事务状态下向表进行插入一行数据,然后在两个表中都查看,结果发现数据不一样,如下图所示:

139714fe013cad9fe9ec9d4662a45e5f.png

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

197c064d42233d01d7fc1b99770d3a4e.png

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

818edd5ec9bd77243dd1fdf594107f99.png

这就是REPEATABLE READ级别的效果,就是两个事务操作的时候相互不干扰,只有当两个事务都提交了,数据才会同步。

4.设置为SERIABLIZABLE级别

这个时候只有当前一个事务执行完成并提交了,下一个事务才开始,做了更加严格的限制,所以一般不做这样的级别限制

同步:(clock)

通过锁机制来解决同步问题

锁:

共享锁(读锁):

独占锁(写锁):

写锁的优先级高于读锁

锁级别:

表锁,行锁,页锁(内存空间)

锁的实现:

服务器级别的;只能实现表锁

存储引擎级别的:可以实现行锁

>LOCK TABLES tab_name READ;加锁

>UNLOCK TABLES;释放锁

(注意:如果在InnoDB中,定义时候并不生效,只有真正的事务开始,

定义的锁才生效)

降低粒度,可以更好的支持并发性,这样锁的颗粒就越小,类似行锁,锁的

范围小一些。

MYSQL的用户管理:

创建用户

CREATE USER

删除用户

DROP USER

授权

GRANT PRIV_LIST ON db.table TO [IDENTIFIED BY 'redhat'];

收回权限

REVOKE priv_list ON db.table FROM ;

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 ;字段级别的权限

执行存储过程的权限

GRANT EXECUTE ON XXXX TO

忘记MySQL的密码:

方法1.重装

方法2.

vim /etc/init.d/d

先停止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梦-齐-分享”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值