mysql5常用命令(一)

1、登录mysql

(1) mysql -u[用户] -p[密码] -h[登录到哪台数据库] 
注意:-p后面不要加空格
[root@Oldboy ~]#  mysql -uroot -p123456 -h localhost

(2) mysql  [数据库名]  -u[用户] -p[密码] -h[登录到哪台数据库]
[root@Oldboy ~]#  mysql  test -uroot -p123456 -h localhost

1.10、指定端口号和ip地址登录

mysql -u root -P 3307 -h 101.200.152.192 -p

1.1、查看数据库

mysql> show databases;
mysql> show databases like '%weddnqrtia%';
[root@Oldboy ~]# mysql -uroot -p123456  -e "show databases;"

1.2、查看当前用户

mysql>  select user();

12.1、查看允许登录mysql的所有用户和主机

mysql> select user,host from mysql.user;

1.3、查看创建的数据库信息(字符集)

mysql> show create database oldboy;

2、设置mysql密码

[root@Oldboy ~]#  mysqladmin  -uroot password '123456'

3、修改mysql 密码

[root@Oldboy ~]#  mysqladmin  -uroot -p123456 password '654321'
[root@Oldboy ~]#  mysql> update mysql.user set password=password('oldboy123') where user='root' and host='localhost';

4、刷新mysql命令

mysql> flush privileges;

4.1、创建一个新的用户,并且这个用户可以为别人授权

grant all privileges on . to 'admin'@'localhost' identified by 'mypassword' with grant option; 

with grant option:可以为别人授权的权限

5、mysql为数据库授权并创建用户

mysql> grant all  privileges  on *.* to root@'172.16.1.%' identified by 'oldboy123';
mysql> grant all  privileges  on ttc_mager.* to clouddeep@'127.0.0.1' identified by 'rtlou@8ty90';

6、只创建用户

mysql> create user rtnqg@'172.16.1.%' identified by '123456';

7、只授权不创建用户

mysql> grant all on wenqiang.* to wenqiang@'172.16.1.%';

8、删除用户

(1) 查看数据库中所有用户
mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
+---------------------------------------+
| User: 'root'@'%'; |
| User: 'root'@'127.0.0.1'; |      #保留
| User: 'root'@'::1'; |                 #保留
| User: ''@'localhost'; | 
| User: 'root'@'localhost'; |     #保留
| User: ''@'localhost.localdomain'; |
| User: 'root'@'localhost.localdomain'; |   #保留
+---------------------------------------+
(2) 删除用户
mysql> drop user wenqiang@'172.16.1.5';
mysql> delete from mysql.user where user='wenqiang' and host='172.16.1.51';     (drop删不掉的时候用delete)

9、查看普通用户授权

(1) 先查看数据库中有哪些用户
mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
(2) 再查看指定用户的授权情况
mysql> show grants for 'wenqiang'@'%';
后面的% 根据第一条查看到的内容来写具体ip地址

9.1、当root用户无法给普通用户授权的时候

(1)登录mysql
[root@localhost ~]# mysql -uroot -p -h localhost
mysql> grant all on *.* to root@'localhost' identified by '123456';        
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) #报错

(2)查看当前有哪些用户
mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
+---------------------------------------+
| query                                 |
+---------------------------------------+
| User: 'root'@'127.0.0.1';             |  #使用 mysql -uroot -p -h127.0.0.1登录mysql授权没问题
| User: 'wenqiang'@'172.16.1.%';        |
| User: 'root'@'localhost';             |  #我发现从localhost登录的root用户无法给普通用户授权
| User: 'root'@'localhost.localdomain'; |
+---------------------------------------+
4 rows in set (0.00 sec)
(3)查看该root用户的Grant_priv选项是Y还是N(N表示无权给普通用户授权)
mysql> select * from mysql.user where User='root' and Host='localhost'\G;
*************************** 1. row ***************************
                  Host: localhost
                  User: root
              Password: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
           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: N     #无授权权限
       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: 
      password_expired: N
1 row in set (0.00 sec)

ERROR: 
No query specified

(3)把Grant_priv选项的N改为Y就可以了
mysql> update mysql.user set Grant_priv='Y' where User='root' and Host='localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

(4)退出重新登录mysql,再次给普通用户授权(一定要先退出mysql)
mysql> grant all on *.* to root@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

10、撤回权限(这里只是撤回权限,用户仍然可以登录)

(1) 查看数据库中所有用户
mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
(2) 查看某个用户的授权情况
mysql> show grants for 'wenqiang'@'%';
后面的% 根据第一条查看到的内容来写

(3) 撤回权限
mysql> revoke select, insert, update on oldboy.* from wenqiang@'172.16.1.%';
mysql> revoke all on test.* from oldboy@'127.0.0.1';
该用户需要重新连接mysql数据库权限才能生效

grant all的所有权限:
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER,index

11、创建数据库

格式:

create database 数据库名 default character set 字符集名 collate 字符集类型;

mysql> create database oldgirl;                                                                                                  默认创建拉丁字符集
mysql> create database oldboyDB default character set utf8 collate utf8_general_ci;           创建数据库指定字符集UTF8
mysql> create database oldgirlDB default character set gbk  collate gbk_chinese_ci;           创建数据库指定字符集GBK
mysql> show  CHARACTER SET;                                                                                                  查看所有字符集
mysql> show create database oldboyDB;                                                                                   查看指定数据库字符集

12、查看当前慢查询的语句

mysql> show  processlist;                                                     可能是不完整的语句
mysql> show full processlist;                                               可能是不完整的语句
[root@Oldboy ~]# mysql -uroot -poldboy123 -e "show full processlist;"|grep -v  Sleep             现场完整抓取慢查询语句

mysql -uroot -pmysql_748@wyx -e "show full processlist;"|grep -v  Sleep |sort -k6rn     查看持续时间最长的SQL

13、查看慢查询是否开启以及慢查询日志路径

mysql> show variables like "%slow%";

14、试图连接mysql的次数(mysql的命中率,包括正常和失败次数)

show  status like 'connections';

15、 已经建立的线程数

show  status like 'threads_created';

16、查询user表中company_id='xxx' 并且 is_activated=1的条件并统计数量某字段并统计

select * from company WHERE  name like '%国药%';
SELECT count(*) FROM `user` WHERE company_id ='5f244f1169df00cee96b3f1d' AND is_activated =1;

17、对log字段降序排序

# 对log字段降序排序
select company_id,log,create_date from log ORDER BY create_date DESC

# 对log字段降序排序并筛选 '登录客户端成功' 的行
select company_id,log,create_date from log where log like '%登录客户端成功%' ORDER BY create_date DESC;

18、查询create_date 字段大于某一时间段的sql

# 查询大于某一时间段的
select company_id,create_date from log where create_date>'2019-07-27 19:30:00' order by create_date desc;

# 查询大于某一时间段的comany_id并去重
select DISTINCT company_id from log where create_date>='2021-10-01 19:30:00' order by create_date desc;;

# 使用where in语法
select * from company where id in(select DISTINCT company_id from log where create_date>='2021-10-01 19:30:00' order by create_date desc)
相关推荐
drebander16 分钟前
MySQL 查询优化案例分享
数据库·mysql
小林coding3 小时前
阿里云 Java 后端一面,什么难度?
java·后端·mysql·spring·阿里云
18号房客4 小时前
高级sql技巧进阶教程
大数据·数据库·数据仓库·sql·mysql·时序数据库·数据库架构
翔云1234565 小时前
MySQL purged gtid是如何生成和维护的
数据库·mysql
平行线也会相交6 小时前
云图库平台(三)——后端用户模块开发
数据库·spring boot·mysql·云图库平台
恒辉信达7 小时前
hhdb客户端介绍(53)
数据库·mysql·hhdb·数据库可视化界面客户端
Hello.Reader8 小时前
Redis热点数据管理全解析:从MySQL同步到高效缓存的完整解决方案
redis·mysql·缓存
是程序喵呀9 小时前
MySQL备份
android·mysql·adb
指尖上跳动的旋律9 小时前
shell脚本定义特殊字符导致执行mysql文件错误的问题
数据库·mysql
苹果醋313 小时前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx