mysql命令和语法
mysql的一些基本命令和语法
一、显示数据库列表
show databases;
二、创建数据库
drop database IF EXISTS test;
create database test CHARACTER SET utf8 COLLATE utf8_general_ci;
三、 在mysql中创建用户名和密码
CREATE USER 'test'@'%' IDENTIFIED BY 'mysql';
四、 授权test用户拥有test数据库的所有权限
授权增删改查给相应的用户
grant select,insert,delete,update on *.* TO '用户名'@'%'
windows
grant ALL on test.* to 'test'@'%';
linux
grant ALL privileges on test.* to 'test'@'%' identified by 'mysql' with grant option;
Mysql8.0
ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';
grant ALL privileges on nacos.* to 'nacos'@'%' with grant option;
五、 刷新权限
-- 重新给用户修改权限以后需要刷新权限
flush privileges;
六、查看字符集
show variables like 'character%';
七、 mysql数据备份导入导出
-- 格式:mysqldump -h 链接ip -P (大写)端口 -u 用户名 -p 密码数据库名>d:XX.sql(路径)
-- 导出
mysqldump -h 127.0.0.1 -P 3306 -uroot -proot -database cmdb > /data/backup/cmdb.sql
-- 导入
mysql -h 127.0.0.1 -P 3306 -uroot -proot —database cmdb < /data/backup/cmdb.sql
八、mysql 默认时区
mysql 5.7.20安装的时候默认时区为系统时区UTC,如果不设置时区,由于时区不对,jdbc连接数据库的时候会报以下错误。
Caused by: java.sql.SQLException:
The server time zone value ‘�й���ʱ��’
is unrecognized or represents more than one time zone.
查看当前时区命令
-- 如果是中国标准时间, 会输出08:00 select timediff(now(),convert_tz(now(),@@session.time_zone,'+00:00')); -- 或者 SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP); -- 此命令不能完全查看时区 show variables like '%time_zone%';
修改当前时区为中国时区:+8:00 东八区 ,这里需要注意的是,如果mysql重启了以后就会失效
set global time_zone = '+8:00'; flush privileges;
设置永久生效,修改mysql的配置文件my.ini。[mysqld]字段下面添加一行:default-time-zone=’+08:00’,保存重启,或者保存以后按上面步骤设置
九、查看当前版本号
- 通过linux的命令,执行mysql -V查看
- 登录进mysql,执行select version();
十、查看表结构
SELECT
@rownum := @rownum + 1 AS '序号',
COLUMN_NAME 列名,
COLUMN_TYPE 数据类型,
DATA_TYPE 字段类型,
CHARACTER_MAXIMUM_LENGTH 长度,
IS_NULLABLE 是否为空,
COLUMN_DEFAULT 默认值,
COLUMN_COMMENT 备注
FROM
( SELECT @rownum := 0 ) r,
INFORMATION_SCHEMA.COLUMNS
where
-- developerclub为数据库名称,到时候只需要修改成你要导出表结构的数据库即可
table_name ='tableName'
十一、修改字段
如果要修改,先执行删除再执行添加操作
ALTER TABLE 表名 ADD COLUMN 字段 int(11) DEFAULT NULL COMMENT '备注' AFTER 在某个字段之后;
ALTER TABLE 表名 drop COLUMN 字段;
#修改表字段,注意not null如果有的话必须放后面
ALTER TABLE table CHANGE column column VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
#修改字段的同时修改字符
ALTER TABLE table CHANGE column column VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL;
十二、修改字符集
字符集可以单独修改,也可以根据上面的根据字段一起修改
#查看数据库字符集
show create database databasename;
#修改数据库的默认字符集
alter database db_name default character set character_name;
#查看表字符集
show create table tablename;
#修改表默认字符集
alter table tablename default character set utf8mb4 collate utf8mb4_general_ci;
alter table tablename default character set utf8mb4 collate utf8mb4_unicode_ci;
#转换表字段的字符集
alter table tablename convert to character set utf8mb4 collate utf8mb4_general_ci;
#修改字段的同时修改字符
ALTER TABLE tablename CHANGE column columnname VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL;
十三、查看数据库状态
显示进程:包含连接的客户端等等
SHOW PROCESSLIST;
查看是否锁表
SHOW OPEN TABLES WHERE In_use > 0;
查看正在锁的事务
-- 8.0之前
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
-- 8.0之后
select * from performance_schema.data_locks;
查看等待锁的事务
-- 8.0之前
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
-- 8.0之后
select * from performance_schema.data_lock_waits;