查看表结构
- desc table_name
- show create table table_name(查看建表sql)
processlist
- show processlist 查看进程
- kill id 杀死进程
- select * from information_schema.processlist 查看进程
事务与锁
- select * from information_schema .innodb_trx 查看正在执行的事务
- select * from information_schema .innodb_locks 查看正在执行的锁
- show status like ‘innodb_row_lock%’ 查看锁的情况
查询
- find_in_set (当column中的各个值用 ‘,’ 隔开的时候比like更精确)
select * from table where find_in_set(1,column) - 当column是json形式的时候
select column->’$.key’ from table_name 取值
select * from table where column=cast(key as json) json必须使用cast转换,直接查询获取不到 - 两值合并 concat 常用电话加区号这种
select * from table where concat(key1,key2)=? - column转中文中文排序
CONVERT(${key} USING GBK) - 给查询结果添加一列自增字段
主要是定义一个变量
select @rownum:=@rownum+1 as rank,t.* from (select @rownum:=0) as a, [table t]
too many connections
- 查看最大连接数
show variables like ‘%max_connections%’ - 查看服务器响应的最大连接数:
show global status like ‘Max_used_connections’ - 重设最大连接数
set GLOBAL max_connections=xxx 通常服务器响应连接数占最大连接数比例超过10%比较好
win启动mysql(遇到问题以及解决,个人觉得还是直接docker启动吧,win辣鸡)
- 临时启动/关闭
mysqld --console //启动 mysqladmin -uuser -p shutdown//关闭 - 以管理员身份运行cmd
net start mysql 
- 首先检查my.ini文件,保证mysql配置信息正确
my.ini
[client]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=C:\mysql
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
# datadir=C:\mysql\data
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
* 检查有没有data文件夹,或者data文件夹是错误的
* mysqld -remove 然后删除data文件件
* mysqld -install
* mysqld --initialize-insecure (初始化,生成data文件夹)
mysqld --initialize(会生成随机密码)
* net start mysql
* 然后可以无密码正常登陆(8.0.17版本,别的版本没调试过)
* 更改密码
**use mysql;**
**ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';**
*别的方法 set password=password('123456');
update user set password=password(‘123’) where user=’root’ and host=’localhost';
我的版本没效果,会报错*
* flush privileges;
### 客户端链接的问题
* caching-sha2-password
* select version() 查看一下版本
* show variables like 'default_authentication_plugin'; //查看一下当前的加密方式
### 修改密码(添加用户以及授权)
alter user 'root'@'localhost' identified by 'password' password expire never //修改密码规则
alter user 'root'@'localhost' identified with mysql_native_password by 'password'; #更新用户的密码
flush privileges; #刷新权限
alter user ‘root’@‘localhost’ identified by '123456';