·MySQL数据库管理(SQL操作命令,解决忘记密码,设置用户权限)
文章目录
- 数据库基本操作命令
- MySQL查看当前服务器中包含的库
- 查看当前使用的库中包含的表
- 显示数据表的结构(字段)命令
- SQL操作管理命令
- DDL操作命令
- DDL语句创建库,表的命令
- DDL语句删除库,表的命令
- DML操作命令
- DML语句的作用是
- 向数据表中插入新的数据记录命令(insert)
- alter用法总结
- 修改,更新数据表中的数据记录(update)
- 删除整个表
- 在数据表中删除指定的数据记录命令(delete)
- **清空表的数据**
- 删除数据库和表
- 查看表结构命令
- DQL操作命令
- 创建临时表
- DCL操作命令
- DCL语句的作用
- 设置用户权限的命令
- 撤销用户权限的命令
- 远程连接实例
- 安装mysql服务进行远程连接
- 设置环境变量
- 忘记密码
- 改该密码
数据库基本操作命令
MySQL查看当前服务器中包含的库
show databases;
mysql -u root -p进入数据库
> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
查看当前使用的库中包含的表
需要先使用USE语句切换到使用的库
- use 数据库名
- show tables
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| engine_cost |
| event |
| func |
| general_log |
...省略内容
显示数据表的结构(字段)命令
mysql> describe [数据库名.]表名; ===>可以使用desc [数据库名.]表名;
mysql> describe user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(32) | NO | PRI | | |
SQL操作管理命令
- SQL语言
- 是Structured Query Language的缩写,及结构化查询语言
- 是关系型数据库的标准语言
- 用于维护管理数据库,如数据查询,数据更新,访问控制,对象管理等功能
- SQL分类
- DDL:数据定义语言
- DML:数据操纵语言
- DQL:数据查询语言
- DCL:数据控制语言
DDL操作命令
DDL语句用于创建数据库对象,如库,表,索引等
DDL语句创建库,表的命令
创建数据表:create table 表名(字段定义…)创建数据库:create database 数据库名
创建数据表
mysql> create database zhang; //创建库
Query OK, 1 row affected (0.00 sec)
mysql> use zhang;
Database changed
mysql> create table benat (id int(3) not null primary key auto_increment,name varchar(10) not null,score decimal(5,2),address varchar(50) default '未知');整数型int(3);000-999- double 浮点型 8字节- decimal(5,2)有效数字是5位,小数点后面保留2位 (100.00 099.50)- float 单精度浮点 4字节- char (10)固定长度字符串- varcha (50)可变长度字符串- char字符- create table benat 创建表 - not null 不允许为空auto_increment 自动增长default 未知- 字段约束:非空not null;默认default ‘’;主键primary key;自增auto increment。存储引擎:myisam;innodb。字符集:utf8。
DDL语句删除库,表的命令
- 删除指定的数据表:drop table [数据库名.]表名
- 删除指定的数据库:drop database 数据库名
mysql> drop table benat; '//删除表'mysql> drop database zhang; '//删除库'
mysql> drop table school.info; '//删除表,中间加点,就相当于是绝对路径'
Query OK, 0 rows affected (0.00 sec)mysql> drop database school; '//删除库'
Query OK, 0 rows affected (0.00 sec)
DML操作命令
DML语句的作用是
- DML语句用于对表中的数据进行管理
- 包括以下操作
- insert:插入新数据
- update:更新原有数据
- delete:删除不需要的数据
向数据表中插入新的数据记录命令(insert)
mysql> insert into 表名(字段1,字段2,字段3,......) values (字段1的值,字段2的值,字段3的值,.....);
mysql> insert into benat values (2,'lisi',77,'shanghai'); 'insert into 后面不跟字段名(默认所有字段),values后面按顺序写全'mysql> select * from info;
+----+----------+-------+----------+
| id | name | score | address |
+----+----------+-------+----------+
| 1 | zhangsan | 88.00 | beijing |
| 2 | lisi | 77.00 | shanghai |
+----+----------+-------+----------+
添加用户
mysql> insert into benat (id,name,score,address) values (2,'lisi',88.6,'shanghai');
mysql> select * from benat;
+----+----------+-------+----------+
| id | name | score | address |
+----+----------+-------+----------+
| 1 | zhangsan | 88.60 | biejing |
| 2 | lisi | 88.60 | shanghai |
+----+----------+-------+----------+
2 rows in set (0.00 sec)
alter用法总结
- 删除列
alter table 【表名】 drop 【列名】
- 增加列
alter table 【表名】 add 【列名】 【类型】
重命名列
ALTER TABLE 【表名】 CHANGE 【列名】【新名】
给info表添加一个字段为hobby,整型数据类型,不允许为空
alter table info add hobby int(3) not null

查询A表中的行数
select count(*) from A
显示大于80的
mysql> select * from benat where score > 80;
创建一个新表tmp 把大于80 的数据导入进去
mysql> create table tmp as select * from benat where score > 80;
修改,更新数据表中的数据记录(update)
update更新:表名 set 字段名 1=值1[,字段名2=值2] where条件表达式
mysql> update benat set name='zhangsan' where id=2; 修改id=2的名字
mysql> select * from benat;
+----+----------+-------+----------+
| id | name | score | address |
+----+----------+-------+----------+
| 2 | zhangsan | 88.60 | shanghai |
| 3 | wangwu | 77.00 | shanghai |
+----+----------+-------+----------+mysql> update benat set name='zhangsan'; //修改所有id的name'
mysql> select * from benat;
+----+----------+-------+----------+
| id | name | score | address |
+----+----------+-------+----------+
| 2 | zhangsan | 88.60 | shanghai |
| 3 | zhangsan | 77.00 | shanghai |
+----+----------+-------+----------+mysql> update benat set score=77 where name='lisi'; 添加lisi
mysql> select * from benat;
+----+----------+-------+----------+
| id | name | score | address |
+----+----------+-------+----------+
| 1 | zhangsan | 88.60 | biejing |
| 2 | lisi | 77.00 | shanghai |
| 3 | wangwu | 77.30 | hangzhou |
| 4 | zhaoliu | 99.00 | suzhou |
| 5 | tianxing | 60.00 | 未知 |
+----+----------+-------+----------+
5 rows in set (0.00 sec)
删除整个表
mysql> delete from tmp; //删除
在数据表中删除指定的数据记录命令(delete)
mysql> delete from 表名 where 条件表达式;
mysql> delete from tmp where score >= 90 删除90分以上的
mysql> select * from tmp;
+----+----------+-------+----------+
| id | name | score | address |
+----+----------+-------+----------+
| 1 | zhangsan | 88.60 | biejing |
| 2 | lisi | 88.60 | shanghai |
+----+----------+-------+----------+
清空表的数据
mysql> delete from table_name;
mysql> truncate table table_name;
删除数据库和表
使用DDL语句删除库、表
- 删除指定的数据表
mysql> drop tables benat; //删除整个表
删除整个数据库
mysql> drop database zhang;
查看表结构命令
mysql> desc benat;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | int(3) | NO | PRI | NULL | auto_increment |
| name | varchar(10) | NO | | NULL | |
| score | decimal(5,2) | YES | | NULL | |
| address | varchar(50) | YES | | 未知 | |
+---------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
DQL操作命令
- DQL是数据查询语句,只有一条:SELECT
- 用于从数据表中查找符合条件的数据记录
- 查询时可不指定条件
mysql> select 字段名1,字段名2,...... from 表名;
查询时指定条件
mysql> select 字段名1,字段名2,...... from 表名 where 条件表达式;
mysql> select score from benat;
+-------+
| score |
+-------+
| 88.60 |
| 77.00 |
+-------+
mysql> select score,address from benat;
+-------+----------+
| score | address |
+-------+----------+
| 88.60 | shanghai |
| 77.00 | shanghai |
+-------+----------+
mysql> select score,address from benat where id=2;
+-------+----------+
| score | address |
+-------+----------+
| 88.60 | shanghai |
+-------+----------+
1 row in set (0.00 sec)
创建临时表
用于存放临时的数据,不会长时间的存在,断开连接就会被删除,数据存放在内存之中,不在磁盘。
mysql> create temporary table tmp(id int (5) not null primary key auto_increment, -> name char(10) not null, -> socre double(5) default '0' -> )engine=innodb default charset=utf8; mysql> desc tmp; +-------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+----------------+ | id | int(5) | NO | PRI | NULL | auto_increment | | name | char(10) | NO | | NULL | | | socre | decimal(5,2) | YES | | 0.00 | | +-------+--------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec)
复制表
mysql> create table tmp as select * from benat; 复制
like方法
mysql> create table newtest like test; ===>从test完整复制表的结构生车工newtest
mysql> insert into newtest select * from test; ===>导入数据
DCL操作命令
DCL语句的作用
- 设置或查看用户的权限,或者创建用户
设置用户权限的命令
-
若用户已存在,则更改用户密码
-
若用户不存在,则新建用户
-
GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 [IDENTIFIED BY ‘密码′
mysql> grant 权限列表 on 数据库名.表名 to 用户名@@来源地址 [identified by '密码'];举例mysql> grant select on zhang.* to 'test'@'localhost' identified by '123456';
查看用户的权限
#示例
mysql> show grants for ‘test’@‘20.0.0.20’;
mysql> show grants for 用户名@来源地址;
举例
mysql> show grants for 'test'@'localhost';
+-------------------------------------------------+
| Grants for test@localhost |
+-------------------------------------------------+
| GRANT USAGE ON *.* TO 'test'@'localhost' |
| GRANT SELECT ON "zhang".* TO 'test'@'localhost' |
+-------------------------------------------------+
2 rows in set (0.00 sec)
查看所有权限
mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)
撤销用户权限的命令
-
REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址
mysql> revoke all privileges on *.* from 'root'@'%'; mysql> show grants for 'root'@'%'; +----------------------------------------------------+ | Grants for root@% | +----------------------------------------------------+ | GRANT USAGE ON *.* TO 'root'@'%' WITH GRANT OPTION | +----------------------------------------------------+ 1 row in set (0.00 sec)
远程连接实例
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456'; '//all privileges:所有权限,%:所有终端'
Query OK, 0 rows affected, 1 warning (0.01 sec)mysql> grant all privileges on *.* to 'root'@'locahost' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
主机查看
查看数据库
安装mysql服务进行远程连接
设置环境变量
mysql -uroot -p
忘记密码
设置一个tom用户
mysql> grant all privileges on *.* to 'tom'@'locahost' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> quit
修改配置文件
root@localhost mysql]# vim /etc/my.cnf
server-id=1
skip-grant-tables //添加 (跳过验证)
[root@localhost bin]# systemctl restart mysqld.service
[root@localhost bin]# mysql -u tom -p 再次登录就不用密码
Enter password: mysql>
改该密码
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
.
.
.
| time_zone_transition_type |
| user |
+---------------------------+
mysql> select * from user;
authentication_string 用户密码的位置mysql> update mysql.user set authentication_string=password('123456') where user='tom';
Query OK, 0 rows affected, 1 warning (0.01 sec)
Rows matched: 1 Changed: 0 Warnings: 1
mysql> flush privileges;
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
