目录
一、使用MySQL数据库
1.查看数据库结构
show databases:用于查看数据表中所包含的数据库。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
备注:
- information_schema数据库:保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权 限等
- performance_schema:用于监控MySQL server在一个较低级别的运行过程中的资源消耗、资源等待等情况
- mysql:是 MySQL 服务正常运行所需的数据库,其中包含了用户认证相关的表
2.查看数据库中的表
show tables语句中:用于查看数据库中所包含的表。在此之前应该使用use切换到所使用的数据库。
mysql> use mysql;
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| engine_cost |
| event |
| func |
| general_log |
。。。。。。
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
备注:
MySQL数据库数据文件存放在/usr/local/mysql/data目录下,每个数据对应三个文件,拓展名为“.frm”,“.MYD”和“.MYI”。
其中,“.frm” 文件存放了与表相关的元数据(meta);“.MYD” 是MySQL存储引擎专用,存放MYSQKL表的数据;“.MYI”主要存放存放MyISAM索引的相关信息。
3.查看表的结构
mysql> use mysql;
Database changed
mysql> describe user;
+-----------------------------------+------+-----+--------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------------------+------+-----+--------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(32) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N
21.SQL语言
DDL(data definition language):数据定义语言(create创建、drop删除、alter修改)
DML(data manipuation language):数据操纵语言(insert插入、update更新、delete删除)
DQL(data query language):数据查询语言(select选择、查询 show 查询、describe)
DCL(data control language):数据控制语言(grant授权、revoke撤销授权、commit提交、rollback回滚)
3.创建数据库
mysql> create database auth; (创建新库)
Query OK, 1 row affected (0.00 sec)
mysql> use auth
Database changed
mysql> create table users (user_name char(20),user_pass char(50));
Query OK, 0 rows affected (0.02 sec)
mysql> describe users; (查看表的结构)
+-----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+-------+
| user_name | char(20) | YES | | NULL | |
| user_pass | char(50) | YES | | NULL | |
+-----------+----------+------+-----+---------+-------+
mysql> insert into users values('zhangsan',password('123')); (添加表的信息)
mysql> insert into users values('lisi',password('123'));
4.查询数据记录
(1)显示表的信息内容
mysql> select * from users; (显示表的信息内容)
+-----------+-------------------------------------------+
| user_name | user_pass |
+-----------+-------------------------------------------+
| zhangsan | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| lisi | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+-----------+-------------------------------------------+
(2) 显示列
mysql> select user_name from users;
+-----------+
| user_name |
+-----------+
| zhangsan |
| lisi |
+-----------+
(3)显示指定行
mysql> select * from users where user_name='zhangsan';
+-----------+-------------------------------------------+
| user_name | user_pass |
+-----------+-------------------------------------------+
| zhangsan | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+-----------+-------------------------------------------+
5. updata 更新
更新zhangsan用户的密码。
mysql> update users set user_pass=password('pwed1234') where user_name='zhangsan';
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 1
更改密码
方式一
mysql> set password=password('pwd123');
Query OK, 0 rows affected, 1 warning (0.00 sec)
方法二
[root@localhost ~]# mysqladmin -uroot -ppwd123 password '123456'
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
[root@localhost ~]# mysql -uroot -p123456
mysql>
会存在警告信息,提醒在命令行修改密码不安全。
方法三:
mysql> select * from mysql.user\G
mysql> update mysql.user set authentication_string=password('pwd123') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
mysql> flush privileges; (数据更新)
Query OK, 0 rows affected (0.01 sec)
6.delete 删除
(delete from +表 where 表达式)
( truncate +表)
mysql> delete from auth.users where user_name='lisi';
Query OK, 1 row affected (0.01 sec)
truncate和delete的区别:
(1)
truncate删除表中的内容,不删除表结构,释放空间;
delete删除表中的内容,不删除表结构,但不释放空间
(2)
truncate删除数据后重新写数据会从1开始,
delete删除数据后只会从删除前的最后一行续写(延续标识列,不会从头开始);内存空间上,truncate省空间
(3)
delete属于DML语句,而truncate和drop都属于DDL语句
delete可以在后续加上where进行针对行的删除
truncate和drop后面只能加上表名,直接删除表,无法where。
drop table 表名 删除表,内容连带结构一起删除;
7.临时表
mysql> create temporary table user01 (id int(10),name char(20));
备注:
临时表在退出MySQL之后,自动消失。
二、数据库用户授权
1.给予授权
mysql> grant select on auth.* to 'zhangsan'@'localhost' identified by '123456';
Query OK, 0 rows affected, 2 warnings (0.00 sec)
备注:
auth.* auth库的所有表
*.* 所有库的所有表
2.查看授权
mysql> show grants for 'zhangsan'@'localhost';
+----------------------------------------------------+
| Grants for zhangsan@localhost |
+----------------------------------------------------+
| GRANT USAGE ON *.* TO 'zhangsan'@'localhost' |
| GRANT SELECT ON `auth`.* TO 'zhangsan'@'localhost' |
+----------------------------------------------------+
3.撤销权限
mysql> revoke all on auth.* from 'zhangsan'@'localhost';
Query OK, 0 rows affected, 1 warning (0.00 sec)