·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)

主机查看

image-20200816225756113

查看数据库

image-20200816225942066

安装mysql服务进行远程连接

image-20200820101821621

设置环境变量

image-20200820101922960

image-20200820101947308

mysql -uroot -p

image-20200816230241655

image-20200816230341543

忘记密码

设置一个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;


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部