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)
相关推荐
daiyang123...44 分钟前
MySQL【知识改变命运】11
android·数据库·mysql
licy__2 小时前
正则表达式语法详解(python)
数据库·mysql·正则表达式
zhangshengqiang1684 小时前
Linux下安装mysql8.0版本
linux·mysql
Karoku0664 小时前
【企业级分布式系统】ELK-企业级日志分析系统
运维·数据库·redis·mysql·elk·缓存
FLGB5 小时前
Docker 安装单机版mysql 并持久化数据
mysql·docker·容器
枫哥和java9 小时前
python serializer, model drf通过序列化器, 模型获取mysql 一张表某个字段数据库现存的最大值
数据库·python·mysql
"追风者"13 小时前
mysql数据库(六)pymysql、视图、触发器、存储过程、函数、流程控制、数据库连接池
数据库·mysql
HilariousDog13 小时前
Mysql数据库1——基本原理和基础操作
数据库·mysql·oracle
小诸葛的博客14 小时前
mysql中mvcc如何处理纯读事务的?
数据库·mysql