MySQL全面瓦解2:常用命令和系统管理

MySQL全面瓦解2:常用命令和系统管理,第1张

概述常用命令 打开CMD命令窗口(记住使用管理员身份运行),我们就可以在命令窗口中做一些MySQL的命令 *** 作了: 服务启动和关闭 这个我们上一个章节使用过了:net start mysql,这是服务命令, 常用命令

打开CMD命令窗口(记住使用管理员身份运行),我们就可以在命令窗口中做一些MysqL的命令 *** 作了:

  

服务启动和关闭

这个我们上一个章节使用过了:net start MysqL,这是服务命令,不是语句命令,后面不需要加引号

1 net stop MysqL --代表停止MysqL服务2 net start mysq --代表启动MysqL服务

MysqL登录命令

 这个我们前面一章我们也了解过,使用过了:MysqL -h 主机名 -P 端口 -u 用户名 -p,前面一章有对-h,-u,-p 作过解释,这边 -P 是指Port 端口。

1 MysqL -h localhost -P 3306 -u root -p

 

 默认情况下登陆本机,其实端口和主机都可以省略的:

1 MysqL -u 用户名 -p
查看数据库版本 
1 MysqL> select version();2 +-----------+3 | version() |4 +-----------+5 | 5.7.30    |6 +-----------+7 1 row in set (0.00 sec)

 

显示所有数据库
 1 MysqL> show databases; 2 +--------------------+ 3 | Database           | 4 +--------------------+ 5 | information_schema | 6 | MysqL              | 7 | performance_schema | 8 | sys                | 9 +--------------------+10 4 rows 0.00 sec)
使用某个库:use关键字
1 MysqL> use MysqL;2 Database changed
显示所选库中的所有表信息
 show tables; 2 +---------------------------+ 3 | tables_in_MysqL           | 4 +---------------------------+ 5 | columns_priv              | 6 | db                        | 7 | engine_cost               | 8 | event                     | 9 | func                      |10 | general_log               |11 | gtID_executed             |12 | help_category             |13 | help_keyword              |14 | help_relation             |15 | help_topic                |16 | innodb_index_stats        |17 | innodb_table_stats        |18 | ndb_binlog_index          |19 | plugin                    |20 | proc                      |21 | procs_priv                |22 | proxIEs_priv              |23 | server_cost               |24 | servers                   |25 | slave_master_info         |26 | slave_relay_log_info      |27 | slave_worker_info         |28 | slow_log                  |29 | tables_priv               |30 | time_zone                 |31 | time_zone_leap_second     |32 | time_zone_name            |33 | time_zone_Transition      |34 | time_zone_Transition_type |35 | user                      |36 +---------------------------+37 31 rows 0.00 sec)

 

其他数据库中查询表

show tables from databasename

 1 MysqL> show tables from MysqL;0.00 sec)

 

输出表的创建语句脚本 

用于获取脚本进行表结构迁移之类的

 show create table columns_priv; 2 +--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 3 | table        | Create table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 4 +--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 5 | columns_priv | CREATE table `columns_priv` ( 6   `Host` char(60) ColLATE utf8_bin NOT NulL DEFAulT '', 7   `Db` 64) ColLATE utf8_bin NOT NulL DEFAulT  8   `User` 32) ColLATE utf8_bin NOT NulL DEFAulT  9   `table_name` 10   `Column_name` 11   `Timestamp` timestamp NOT NulL DEFAulT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,1)">12   `Column_priv` set('Select',InsertUpdateReferences') CHaraCTER SET utf8 NOT NulL DEFAulT 13   PRIMARY KEY (`Host`,`Db`,`User`,`table_name`,`Column_name`)14 ) ENGINE=MyISAM DEFAulT CHARSET=utf8 ColLATE=utf8_bin COMMENT=Column privileges' |15 +--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+16 0.00 sec)

 

查看表结构 

以表格的信息输出表的结构,一目了然

 desc columns_priv; 2 +-------------+----------------------------------------------+------+-----+-------------------+-----------------------------+ 3 | FIEld       | Type                                         | Null | Key | Default           | Extra                       | 4 +-------------+----------------------------------------------+------+-----+-------------------+-----------------------------+ 5 | Host        | 60)                                     | NO   | PRI |                   |                             | 6 | Db          | 64)                                     | NO   | PRI |                   |                             | 7 | User        | 32)                                     | NO   | PRI |                   |                             | 8 | table_name  |  9 | Column_name | 10 | Timestamp   | timestamp                                    | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |11 | Column_priv | ') | NO   |     |                   |                             |12 +-------------+----------------------------------------------+------+-----+-------------------+-----------------------------+13 7 rows 0.00 sec)

 

查看当前所在库
 database();2 +------------+3 | database() |4 +------------+5 | MysqL      |6 +------------+0.00 sec)

 

查看所有库引擎
 show engines; 2 +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 3 | Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints | 4 +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 5 | InnoDB             | DEFAulT | Supports transactions,row-level locking,and foreign keys     | YES          | YES  | YES        | 6 | MRG_MYISAM         | YES     | Collection of IDentical MyISAM tables                          | NO           | NO   | NO         | 7 | MEMORY             | YES     | Hash based,stored in memory,useful for temporary tables      | NO           | NO   | NO         | 8 | BLACKHolE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         | 9 | MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |10 | CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |11 | ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |12 | PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |13 | FEDERATED          | NO      | Federated MysqL storage engine                                 | NulL         | NulL | NulL       |14 +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+15 9 rows 0.00 sec)
创建用户 
1 create user user[@host] [IDentifIEd by 'password'];

方括号中的内容是可以省略的,比如设置默认主机%,这样允许用户从其他主机登录,比如不设置密码,这样默认无需密码登录。

我们创建一个用户并登录试试,红色字体是关键语句:

 1 MysqL> create user user1@localhost IDentifIEd by '123456'; 2 query OK,1)">0 rows affected (0.00 sec) 3  4 D:\Setup\MysqL-5.7.30-winx64\bin>MysqL -u user1 -p 5 Enter password: ****** 6 Welcome to the MysqL monitor.  Commands end with ; or \g. 7 Your MysqL connection ID is 16 8 Server version: 30 MysqL Community Server (GPL) 9 10 copyright (c) 2000,1)">2020,Oracle and/or its affiliates. All rights reserved.11 12 Oracle is a registered Trademark of Oracle Corporation and/or itsaffiliates. Other names may be Trademarks of their respective14 owners.15 16 Type help;' or \h' for help. Type \c' to clear the current input statement.

 

修改用户密码:4种方式登录MysqL并修改

格式如下: set password for 用户名@主机 = password('新密码');

set password for root@localhost = password(Helenlyn');
使用 MysqLadmin *** 作

格式如下:MysqLadmin -用户名 -旧密码 password 新密码

1 MysqLadmin -u root -p Helenlyn password Helenlyn1

 

使用脚本语句修改 user 表

打开MysqL数据库,直接更新user表的authentication_string字段。这边localhost可以用%代替。

需要注意:flush privileges是刷新权限,必须执行,才能对用户生效;

我们用的是5.7.30版本,所以密码字段是authentication_string,5.7之前的版本一般来说是password。

 use MysqL; 2 MysqL> update user set authentication_string=password(1234567') where user=user1' and host=localhost'; 3 MysqL> flush privileges;

 

直接设置密码

创建用户的时候同时设置密码,或者登录的用户修改自己的密码,这个在前面部署服务和创建用户的时候都有说明过了:

pwd];2 或 3 set password = password(');

  

删除用户:2种方式直接drop

格式如下:drop user 'username'[@'host']

 drop user user1@localhost;2 query OK,1)">0.00 sec)

 删除完,用户重启就生效了,可以创建个用户试试。

 

删除user表的用户

同样的,执行完需要执行 flush privileges刷新权限才会对用户生效,格式如下:

delete from user where user='用户名' and host='主机';
flush privileges;

2 Database changed3 4 MysqL> delete from user ;5 query OK,1)">6 7 MysqL> flush privileges;8 query OK,1)">0.00 sec)

 

给用户授权

创建用户之后,需要给不同的用户分别授权,这样才能根据不同用户的角色来界定职责和管理范畴

1 grant privilegesCate on database.table to uname'[@host'] [with grant option]

 

说明:

1、grant 是授权的关键字。

2、privilegesCate 代表劝降类型,包含:all privileges:所有权限;select:读权限;delete:删除权限;update:更新权限;create:创建权限;drop:删除数据库、数据表权限。

3、on 用来表实授权的范围具体到那些库和表,看示例中,格式为数据库.表名 ,点号前面指的是数据库名,后面指的是表名,如果想要授权所有库表,可以用 *.* 表示。

4、to 表示权限授予的具体用户,格式:uname@host,uname即用户名,host指的是主机,可以是IP、域名等,如果不做host限制,我们之前的文章也说过了,使用%表示。

5、with grant option 这个选项表示该用户可以将自己拥有的权限授权给别人。如果不加这一项,用户只有使用权限的权力,而没有使用grant命令创建并给其它用户授权的。

6、权限取并集,如果对用户授权了 select+ update,后面又对用户授予了 select + delete,那么用户同时拥有 select + update + delete的权限。

 

1 MysqL> create user brand IDentifIEd by 1234560 rows affected4 MysqL> grant all on *.* to brand@%0 rows affected

说明:这边是创建了一个用户并把所有的权限都授予他。如果要做限制,可以把 *.* 改成具体的数据库或者表,也可以吧%改成具体的host。如果要开放授权能力,可以在末尾加上 with grant option ,这样就基本等同于dba的权限了。

 

查看用户的权限
1 show grants for ']

 

这边需注意,主机可以省略,默认值为%,测试下:

1 MysqL> show grants for brand;2 +---------------------------------------------------------------------------------------------------------------+3 | Grants for brand@%                                                                                            |4 +---------------------------------------------------------------------------------------------------------------+5 | GRANT ALL PRIVILEGES ON *.* TO brand'@' IDENTIFIED BY PASSWORD *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD96 +---------------------------------------------------------------------------------------------------------------+set

当前登录者的权限,如:

 show grants3 +----------------------------------------------------------------------------------------------------------------------------------------+4 | Grants for root@localhost                                                                                                              |5 +----------------------------------------------------------------------------------------------------------------------------------------+6 | GRANT ALL PRIVILEGES ON *.* TO root' WITH GRANT OPTION |7 | GRANT PROXY ON ''@'' TO ' WITH GRANT OPTION                                                                           |8 +----------------------------------------------------------------------------------------------------------------------------------------+9 2 rows set

 

取消用户的权限
1 revoke privilegesCate on database.table FROM '];

 

可以先查show grants,再撤销revoke,再查show grants,来理解整个过程,示例:

 1 MysqL> show grants  2 +---------------------------------------------------------------------------------------------------------------+ 3 | Grants  4 +---------------------------------------------------------------------------------------------------------------+ 5 | GRANT ALL PRIVILEGES ON *.* TO  6 +---------------------------------------------------------------------------------------------------------------+ 7 set 8  9 MysqL> revoke delete on *.* 10 query OK,1)">12 MysqL> show grants 13 +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+14 | Grants for brand@%                                                                                                                                                                                                                                                                                                                                                                                                 |15 +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+16 | GRANT SELECT,INSERT,UPDATE,CREATE,DROP,RELOAD,SHUTDOWN,PROCESS,file,REFERENCES,INDEX,ALTER,SHOW DATABASES,SUPER,CREATE TEMPORARY tableS,LOCK tableS,EXECUTE,REPliCATION SLAVE,REPliCATION CLIENT,CREATE VIEW,SHOW VIEW,CREATE ROUTINE,ALTER ROUTINE,CREATE USER,EVENT,TRIGGER,CREATE tableSPACE ON *.* TO 17 +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+18 set

 

上面我们先查询用户的权限,是all的权限,然后撤销他的delete的权限,再查询,发现它确实少了delete的选项,这个符合我们的预期,说明授权 *** 作没有问题。

关于授权的一些注意点

1、权限最小化原则,有需要再去开通,如果只有查询,就只开通select权限即可

2、读写用户分离,读用户只需给select权限,不要赋予update、insert、delete甚至drop之类的权限

3、尽量设置复杂密码或者让使用者重置密码

4、没有特定情况,一般不需要授予 WITH GRANT OPTION

5、定期清理垃圾用户,回收权限或者删除用户

总结

还有很多常用的命令 *** 作,后续再融入到他章节 一 一 解读。命令是用户进入正式数据库编程之前应知应会的部分,所以需要熟练掌握。

使用过程中需要注意以下细节:

命令的方式 *** 作用户和权限不需要刷新,下一次登录就会自动生效,在MysqL库表进行修改的,需要调用flush privileges; 刷新一下,才会在下次登录生效。

文中所说的host部分可以省略,默认值为%,表示所有机器,这个文中反复说过了。

MysqL中用户名、密码和权限的信息存储在库名为MysqL的user表中,可以打开看看。

总结

以上是内存溢出为你收集整理的MySQL全面瓦解2:常用命令和系统管理全部内容,希望文章能够帮你解决MySQL全面瓦解2:常用命令和系统管理所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1152876.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存