打开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 -u 用户名 -p 旧密码 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:常用命令和系统管理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)