mysql----库表操作                                                            

## 列出所有的库

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| test              |

| wyydb              |

+--------------------+

4 rows in set (0.02 sec)

解释说明:

红色的三个表是默认存在的

## 使用库

mysql> use mysql;

Database changed

解释说明:

在切换库时可以不加分号,但在执行一条sql语句的时候必须使用分号结束

show databases;这个分号也不能少

## 查看库中所有表

mysql> show tables;

## 查看表字段

mysql> desc procs_priv;

## 查看表创建语句

mysql> show create table procs_priv\G

*************************** 1. row ***************************

      Table: procs_priv

Create Table: CREATE TABLE `procs_priv` (

 `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',

 `Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',

 `User` char(16) COLLATE utf8_bin NOT NULL DEFAULT '',

 `Routine_name` char(64) CHARACTER SET utf8 NOT NULL DEFAULT '',

 `Routine_type` enum('FUNCTION','PROCEDURE') COLLATE utf8_bin NOT NULL,

 `Grantor` char(77) COLLATE utf8_bin NOT NULL DEFAULT '',

 `Proc_priv` set('Execute','Alter Routine','Grant') CHARACTER SET utf8 NOT NULL DEFAULT '',

 `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

 PRIMARY KEY (`Host`,`Db`,`User`,`Routine_name`,`Routine_type`),

 KEY `Grantor` (`Grantor`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Procedure privileges'

1 row in set (0.00 sec)

解释说明:

\G 以列方式显示;

\G 既指定了格式也表示结束,此处不需要;(分号)否则会出现ERROR:  No query specified;

ENGINE=引擎

DEFAULT CHARSET=默认字符集

## 查看当前使用的库

mysql> select database();

+------------+

| database() |

+------------+

| mysql      |

+------------+

1 row in set (0.00 sec)

## 查看当前登录用户

mysql> select user();

+----------------------+

| user()               |

+----------------------+

| root@192.168.219.128 |

+----------------------+

1 row in set (0.00 sec)

## 查看版本

mysql> select version();

+-----------+

| version() |

+-----------+

| 5.1.73    |

+-----------+

1 row in set (0.00 sec)

创建

## 创建库

mysql> create database aming;

Query OK, 1 row affected (0.01 sec)

## 进入库

mysql> use aming;

Database changed

## 创建表

mysql> create table tab1 (`id` int(4), `name` char(50)) ENGINE=MyISAM DEFAULT CHARSET=gbk;      

Query OK, 0 rows affected (0.07 sec)

解释说明:

``  这是反引号

设置引擎ENGINE=

设置默认字符集DEFAULT CHARSET=

## 查看库中所有表

mysql> show tables;

+-----------------+

| Tables_in_aming |

+-----------------+

| tab1            |

+-----------------+

1 row in set (0.00 sec)

## 查看表字段

mysql> desc tab1;

## 查看表创建语句

mysql> show create table tab1\G

增删改查

## 插入数据

mysql> insert into tab1(id,name) values(1,'aming');   或者 mysql> insert into tab1 values(1,'aming');

mysql> insert into tab1 values(2,'linux');

Query OK, 2 row affected (0.00 sec)

mysql> insert into tab1(id) values(3);

mysql> insert into tab1(name) values('lili');

Query OK, 2 row affected (0.00 sec)

## 查看表

mysql> select * from tab1;

+------+-------+

| id   | name  |

+------+-------+

|    1 | aming |

|    2 | linux |

|    3 | NULL  |

| NULL | lili  |

+------+-------+

4 rows in set (0.00 sec)

##  修改数据

mysql> update tab1 set id=4 where name='lili';

mysql> update tab1 set name='rose' where id=3;

mysql> select * from tab1;                  

+------+-------+

| id   | name  |

+------+-------+

|    1 | aming |

|    2 | linux |

|    3 | rose  |

|    4 | lili  |

+------+-------+

4 rows in set (0.00 sec)

##  删除指定行

mysql>  delete from tab1 where id=4;

mysql> select * from tab1;        

+------+-------+

| id   | name  |

+------+-------+

|    1 | aming |

|    2 | linux |

|    3 | rose  |

+------+-------+

3 rows in set (0.00 sec)

##  清空数据(不删除表)

mysql> truncate table tab1;

Query OK, 0 rows affected (0.00 sec)

mysql> select * from tab1;

Empty set (0.00 sec)

##  删除表

mysql> drop table tab1;

## 删除库

mysql> drop database db1;



mysql----用户操作                                                      

## 创建用户并授权

mysql> grant all on wyydb.* to 'user1'@'192.168.219.128' identified by '123456';

ERROR 1044 (42000): Access denied for user 'root'@'192.168.219.128' to database 'wyydb'

###############解决办法##################

## 查看当前登录用户

## mysql> select user();

## +----------------------+

## | user()               |

## +----------------------+

## | root@192.168.219.128 |

## +----------------------+

## 1 row in set (0.00 sec)

##

## 退出mysql

## mysql> quit

##

## 登录mysql

## [root@wy ~]# mysql -uroot -p123456

##    

##    查看当前登录用户

## mysql> select user();

## +----------------+

## | user()         |

## +----------------+

## | root@localhost |

## +----------------+

## 1 row in set (0.00 sec)

##

##     授权成功

##    mysql> grant all on wyydb.* to 'user1'@'192.168.219.128' identified by '123456';

##     Query OK, 0 rows affected (0.00 sec)

#############################################

解释说明:

授权其实也是创建新的用户

grant 设置权限

all 表示所有权限

on 指定db.table

to 指定user@host且host可以用%代替表示所有ip(不建议使用,很危险的);192.168.219.%表示这个网段的ip。

identified by '' 设置密码

## 刷新权限

mysql> flush privileges;

解释说明:

创建完用户之后呢,这个权限没有即时生效,因为你的数据可能保存在内存里,还没有到硬盘里,这里需要去刷新一下权限。

## 查看当前数据库进程队列

mysql> show processlist;

+----+------+-----------+------+---------+------+-------+------------------+

| Id | User | Host      | db   | Command | Time | State | Info             |

+----+------+-----------+------+---------+------+-------+------------------+

|  8 | root | localhost | NULL | Query   |    0 | NULL  | show processlist |

+----+------+-----------+------+---------+------+-------+------------------+

1 row in set (0.00 sec)

解释说明:

数据库若是很忙的话,它会有很多很多地查询,通过这样查询可以获得队列,让我们知道这个数据库具体在干什么,

类似于linux中的ps查看进程一样。

## 查看所有配置参数

mysql> show variables;

解释说明:

这些参数都可以在my.cnf里去定义的

## 筛选信息类似grep

mysql> show variables like '%timeout%';

解释说明:

% 表示通配

## 不重启mysql服务修改配置

mysql> set global max_connections=200;

Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'max_connections';

+-----------------+-------+

| Variable_name   | Value |

+-----------------+-------+

| max_connections | 200   |

+-----------------+-------+

1 row in set (0.00 sec)

解释说明:

如果永久生效还需要更改配置文件my.cnf

## 查看状态

mysql> show status;

## 查看行

mysql> select count(*) from mysql.user;

解释说明:

InnoDB查看行会很慢,不会记录每次执行此语句都会重新遍历一次;

MyISAM查看很快,因为已经提前将总数记录在内容中了;

小提示:

若遇到mysql启动不了,或者其他错误,去查看一下它的日志,日志在/etc/init.d/mysqld这个文件里的datadir里定义了;我们是放在/data/mysql目录下,有一个与hostname同名,以.err结尾的日志文件,可以去查看错误内容,帮助解决问题。