本文记录了日常使用 MySQL 时的高频命令,涵盖连接方式、库表管理、用户权限以及索引操作,适合作为随手查阅的速查表。
连接数据库
连接本地数据库:
mysql -u root -p
连接远程数据库:
mysql -h HOSTNAME -u root -p
数据库操作
显示所有数据库:
SHOW DATABASES;
创建新数据库并设置默认字符集:
CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
选择数据库:
USE dbname;
删除数据库:
DROP DATABASE dbname;
用户和权限操作
新建用户
CREATE USER '[USERNAME]'@'[HOST]' IDENTIFIED BY '[PASSWORD]';
分配权限
GRANT ALL ON [DB.TABLES] TO '[USERNAME]'@'[HOST]';
新建用户并分配权限
GRANT [PRIVILEGE_LIST] ON [DB.TABLES] TO '[USERNAME]'@'[HOST]' IDENTIFIED BY '[PASSWORD]';
FLUSH PRIVILEGES;
[PRIVILEGE_LIST]
:权限列表可参考 官方文档,授予全部权限可使用ALL
;[DB.TABLES]
:可以指定具体表,如dbname.table
,也可使用dbname.*
或*.*
;[HOST]
:可以指定具体地址、localhost
(仅本机)或%
(任意来源)。
示例:创建用户 aaa
,允许从任意主机登录,并授予对 dbname
所有表的 CRUD 权限:
GRANT INSERT, DELETE, UPDATE, SELECT ON dbname.* TO 'aaa'@'%' IDENTIFIED BY 'sccc@123';
FLUSH PRIVILEGES;
管理用户密码
修改密码:
ALTER USER '[USERNAME]'@'[HOST]' IDENTIFIED BY '[PASSWORD]';
设置密码过期策略:
ALTER USER 'username'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
ALTER USER 'username'@'localhost' PASSWORD EXPIRE NEVER;
ALTER USER 'username'@'localhost' PASSWORD EXPIRE DEFAULT;
删除用户
DROP USER 'username'@'localhost';
表操作
创建表:
CREATE TABLE topic (
token VARCHAR(10) NOT NULL,
name VARCHAR(100) NOT NULL,
followers INT(11) NOT NULL,
description VARCHAR(1000) NOT NULL
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
重命名表:
ALTER TABLE t1 RENAME TO t2;
修改字段属性或字段名:
ALTER TABLE t2
MODIFY a TINYINT NOT NULL,
CHANGE b c CHAR(20);
添加字段:
ALTER TABLE t2 ADD COLUMN d TIMESTAMP;
删除字段:
ALTER TABLE t2 DROP COLUMN c;
删除表:
DROP TABLE t2;
数据(记录)操作
-- 插入记录
INSERT INTO t1 (a, b) VALUES (33, 'foo');
-- 查询记录
SELECT * FROM t1 WHERE a = 3 AND b LIKE '%foo%';
-- 更新记录
UPDATE t1 SET a = 3 WHERE a = 4 AND b LIKE '%foo%';
-- 删除记录
DELETE FROM t1 WHERE a = 3 AND b IN (1, 2, 3);
索引操作
使用 ALTER 语句
添加普通索引:
ALTER TABLE table_name ADD INDEX index_name (column_list);
添加唯一索引:
ALTER TABLE table_name ADD UNIQUE index_name (column_list);
添加主键索引:
ALTER TABLE table_name ADD PRIMARY KEY index_name (column_list);
使用 CREATE 语句
-- 添加普通索引
CREATE INDEX index_name ON table_name (column_list);
-- 添加唯一索引
CREATE UNIQUE INDEX index_name ON table_name (column_list);