白日梦的MySQL专题(第33篇):各种登陆MySQL的骚操作

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 白日梦的MySQL专题(第33篇):各种登陆MySQL的骚操作

阅读原文#


系列文章公众号首发,点击阅读原文


前置知识#


我们想登陆到mysql中前提是肯定需要一个用户名和密码:比如


mysql -uroot -proot


在mysql中用户的信息会存放在 mysql数据库下的 user表中

可以像下面这样查看到所有用户信息


mysql> use mysql
Database changed
mysql> select * from user\G
*************************** 1. row ***************************
                  Host: localhost
                  User: root
           Select_priv: Y
           Insert_priv: Y
           Update_priv: Y
           Delete_priv: Y
           Create_priv: Y
             Drop_priv: Y
           Reload_priv: Y
         Shutdown_priv: Y
          Process_priv: Y
             File_priv: Y
            Grant_priv: Y
       References_priv: Y
            Index_priv: Y
            Alter_priv: Y
          Show_db_priv: Y
            Super_priv: Y
 Create_tmp_table_priv: Y
      Lock_tables_priv: Y
          Execute_priv: Y
       Repl_slave_priv: Y
      Repl_client_priv: Y
      Create_view_priv: Y
        Show_view_priv: Y
   Create_routine_priv: Y
    Alter_routine_priv: Y
      Create_user_priv: Y
            Event_priv: Y
          Trigger_priv: Y
Create_tablespace_priv: Y
              ssl_type:
            ssl_cipher:
           x509_issuer:
          x509_subject:
         max_questions: 0
           max_updates: 0
       max_connections: 0
  max_user_connections: 0
                plugin: mysql_native_password
 authentication_string: *C85A9826269E1AD748DFC3CEC32D040735B27207
      password_expired: N
 password_last_changed: 2019-11-07 14:39:30
     password_lifetime: NULL
        account_locked: N
*************************** 2. row ***************************
                  Host: localhost
                  User: mysql.session
           Select_priv: N


其中有一列叫做HOST,HOST的不同值决定了用户拥有不同的登陆方式:比如:


标识符 含义
% 任意ip均等登陆
localhost 只允许本地登陆
127.0.0.1 只允许本地登陆
sv1 主机名为sv1的机器可登录,主机名可以在 /etc/hostname中查看
::1 本机可登录


所以在登陆前,请确定你的使用的登陆用户的HOST列中有相应的配置


骚气的登陆#


在mac上登陆华为云的服务器


MacBook-Pro% ssh 'root'@'139.9.92.123'
root@139.9.92.123's password:
Last failed login: Fri May 29 11:03:42 CST 2020 from 202.85.208.14 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Thu May 28 16:36:32 2020 from 202.85.208.7
  Welcome to Huawei Cloud Service
-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
[root@139 ~]#


在mac上远程登陆服务器上的mysql


MacBook-Pro% ./mysql -h139.9.92.123 -uroot -reqw123.. -P3306
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2174
Server version: 5.7.29 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |


mac登陆本地的mysql


如果你有配置环境变量,或者你的mysql的可执行文件在/etc/bin中,那你可以在任何目录中使用mysql命令

你可以直接像下面这样登陆:


MacBook-Pro% mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.30 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>


如果你没有配置环境变量,系统就不能直接识别mysql命令,需要你进入到mysql安装目录下的bin文件下,找到mysql命令,然后执行登陆的动作


MacBook-Pro% /usr/local/mysql/bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.30 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>


也可以用远程登陆的方式登陆本地mysql


MacBook-Pro% mysql -h127.0.0.1 -uroot -proot -P3306
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.30 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| assignment         |
| cal                |


本地登陆


我们可以借助mysql.sock实现本地登陆。

那这个mysql.sock是什么?

看起来我们需要了解一下mysql.sock的作用,因为通过它我们可以实现mysql的本地登陆。


mysql.sock应该是mysql的主机和客户机在同一host(物理服务器)上的时候,使用unix domain socket做为通讯协议的载体,它比tcp快。

通过命令可以查看到mysql.sock的位置。


MacBook-Pro% netstat -ln | grep mysql
64e3f4c55eb824d7 stream  0   0  64e3f4c5614859a7   0   0   0 /tmp/mysql.sock


记下这个 mysql.sock的地址。接下来我们会创建一个配置文件,你找个看着比较顺眼的目录放置这个配置文件。

比如就像下面这样:


MacBook-Pro% sudo mkdir etc
MacBook-Pro% ls -l
total 552
-rw-r--r--   1 root    wheel   275235 Mar 24 01:35 LICENSE
-rw-r--r--   1 root    wheel      587 Mar 24 01:35 README
drwxr-xr-x  40 root    wheel     1280 Mar 24 02:45 bin
drwxr-x---  27 _mysql  _mysql     864 May 28 20:44 data
drwxr-xr-x   5 root    wheel      160 Mar 24 02:44 docs
drwxr-xr-x   2 root    wheel       64 May 29 11:39 etc
drwxr-xr-x  53 root    wheel     1696 Mar 24 02:44 include
drwxr-x---   3 _mysql  _mysql      96 May 28 20:44 keyring
drwxr-xr-x  11 root    wheel      352 May 13 09:16 lib
drwxr-xr-x   4 root    wheel      128 Mar 24 02:44 man
drwxr-xr-x  39 root    wheel     1248 Mar 24 02:44 share
drwxr-xr-x   6 root    wheel      192 May 28 19:20 support-files
MacBook-Pro% cd etc
MacBook-Pro% sudo touch user.root.cnf
MacBook-Pro% sudo vim user.root.cnf


然后在 user.root.cnf 中添加如下的配置:


[client]
user=root
password=root
socket=/tmp/mysql.sock


好了,现在可以这样实现本地登陆


MacBook-Pro% ../bin/mysql --defaults-extra-file=./user.root.cnf
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.30 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>


花里胡哨的本地登陆


有时候,你可能会看到其他大佬登陆mysql时直接使用命令: mysql.local 就骚气十足的本地登陆mysql


他是怎么做到的呢?其实很简单、借助alias+mysql.sock实现:


为我们的登陆mysql的命令添加别名,像下面这样:


MacBook-Pro% alias mysql.local='/usr/local/mysql/bin/mysql --defaults-extra-file=/usr/local/mysql/etc/user.root.cnf'
MacBook-Pro% mysql.local
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.30 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>


从此,你也可以骚气登陆mysql


推荐阅读#


  1. MySQL的修仙之路,图文谈谈如何学MySQL、如何进阶!(已发布)
  2. 面前突击!33道数据库高频面试题,你值得拥有!(已发布)
  3. 大家常说的基数是什么?(已发布)
  4. 讲讲什么是慢查!如何监控?如何排查?(已发布)
  5. 对NotNull字段插入Null值有啥现象?(已发布)
  6. 能谈谈 date、datetime、time、timestamp、year的区别吗?(已发布)
  7. 了解数据库的查询缓存和BufferPool吗?谈谈看!(已发布)
  8. 你知道数据库缓冲池中的LRU-List吗?(已发布)
  9. 谈谈数据库缓冲池中的Free-List?(已发布)
  10. 谈谈数据库缓冲池中的Flush-List?(已发布)
  11. 了解脏页刷回磁盘的时机吗?(已发布)
  12. 用十一张图讲清楚,当你CRUD时BufferPool中发生了什么!以及BufferPool的优化!(已发布)
  13. 听说过表空间没?什么是表空间?什么是数据表?(已发布)
  14. 谈谈MySQL的:数据区、数据段、数据页、数据页究竟长什么样?了解数据页分裂吗?谈谈看!(已发布)
  15. 谈谈MySQL的行记录是什么?长啥样?(已发布)
  16. 了解MySQL的行溢出机制吗?(已发布)
  17. 说说fsync这个系统调用吧! (已发布)
  18. 简述undo log、truncate、以及undo log如何帮你回滚事物! (已发布)
  19. 我劝!这位年轻人不讲MVCC,耗子尾汁! (已发布)
  20. MySQL的崩溃恢复到底是怎么回事? (已发布)
  21. MySQL的binlog有啥用?谁写的?在哪里?怎么配置 (已发布)
  22. MySQL的bin log的写入机制 (已发布)
  23. 删库后!除了跑路还能干什么?(已发布)
  24. 自导自演的面试现场,趣学数据库的10种文件(已发布)
  25. 大型面试现场:一条update sql执行都经历什么?(已发布)
  26. 大型翻车现场:如何实现记录存在的话就更新,如果记录不存在的话就插入。(已发布)
  27. 视频+图文串讲:MySQL 行锁、间隙锁、Next-Key-Lock、以及实现记录存在的话就更新,如果记录不存在的话就插入如何保证并发安全(已发布)
  28. 自导自演的面试现场:说说char 和 varchar的区别你了解多少?。(已发布)
  29. 自导自演的面试现场之--你竟然不了解MySQL的组提交?。(已发布)
  30. 全网最清楚的:MySQL的insert buffer和change buffer 串讲(已发布)
  31. Double Write并不难理解
  32. 简述MySQL的三大范式
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
安全 关系型数据库 MySQL
MySQL的登陆【数据库系统】
MySQL的登陆【数据库系统】
93 0
|
关系型数据库 MySQL 数据安全/隐私保护
【MySQL】解决MySQL登陆时的闪退问题
大家在打开MySQL时,可能会遇到在登陆界面输入密码之后就闪退的这个问题.平时我们写代码,虽然会报错,但是错误的原因是给我们了.我们可以按照错误的原因进行处理.但是MySQL是直接闪退,所以并不知道报错的信息.这就造成了大部分人遇到这种情况就无从下手了.在这里教大家如何查看MySQL的报错信息
|
关系型数据库 MySQL C#
【C#】【MySQL】C#连接MySQL数据库(三)登陆注册代码
【C#】【MySQL】C#连接MySQL数据库(三)登陆注册代码
144 0
【C#】【MySQL】C#连接MySQL数据库(三)登陆注册代码
|
安全 关系型数据库 MySQL
MySQL的登陆【数据库系统】
MySQL的登陆【数据库系统】
MySQL的登陆【数据库系统】
|
关系型数据库 MySQL 数据库
Swing中用户的登陆界面与注册(连MySQL数据库)
近期写了一个小项目,需要用到用户的登陆界面与注册 我将登陆界面和注册界面分开来写
Swing中用户的登陆界面与注册(连MySQL数据库)
|
关系型数据库 MySQL 程序员
程序员之路:mysql登陆与退出
程序员之路:mysql登陆与退出
|
Java 关系型数据库 MySQL
linux_day02(安装mysql 8.0数据库和远程登陆)
CRT终端操作 winscp软件(上传软件到Linux服务器中,alt+p,还可以下载Linux的软件到本地)
233 0
linux_day02(安装mysql 8.0数据库和远程登陆)
|
网络协议 关系型数据库 MySQL
盘点Mysql的登陆方式
盘点Mysql的登陆方式
203 0
|
关系型数据库 MySQL 数据库
mysql常用命令,mysql语法,mysql登陆、创建数据库、创建用户、更改密码、为用户授权...
mysql常用命令,mysql语法,mysql登陆、创建数据库、创建用户、更改密码、为用户授权...
156 0