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结尾的日志文件,可以去查看错误内容,帮助解决问题。