1.新建數據庫
CREATE DATABASE dbName;
2.修改數據庫名稱
a.RENAME DATABASE dbName TO newDbName
這個語法在mysql 5.1.7中被添加進來,到了5.1.23又去掉了。
據說有可能丟失數據。還是不要用的好。
b.如果所有表都是MyISAM類型的話,可以改文件夾的名字
關閉mysqld
把data目錄中的dbName目錄重命名為newDbName
開啟mysqld
c.重命名所有的表
CREATE DATABASE newDbName;
RENAME TABLE dbName.table1 TO newDbName.table1,dbName.table2 TO newDbName.table2;
DROP DATABASE dbName;
3.建表
CREATE TABLE tableName (
uid BIGINT UNSIGNED NOT NULL DEFAULT 0,
name VARCHAR(32) NOT NULL DEFAULT '',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (uid),
KEY (name)
)ENGINE=INNODB DEFAULT CHARSET=UTF8;
4.修改字段類型
ALTER TABLE tableName MODIFY COLUMN columnName TINYINT NOT NULL;
5.修改字段默認值
ALTER TABLE tableName ALTER COLUMN columnName SET DEFAULT '';
6.修改字段名
ALTER TABLE tableName CHANGE columnName newColumnName INT UNSIGNED NOT NULL DEFAULT 0;
7.新增字段
ALTER TABLE tableName ADD columnName INT UNSIGNED NOT NULL DEFAULT 0;
8.刪除字段
ALTER TABLE tableName DROP COLUMN columnName;
9.修改表名
ALTER TABLE tableName RENAME newTableName;
- 查看表索引
SHOW INDEX FROM tableName;
SHOW KEYS FROM tableName;
- 創建索引
CREATE INDEX indexName ON tableName(columnName);——創建普通索引
CREATE UNIQUE INDEX indexName ON tableName(columnName);——創建唯一索引
ALTER TABLE tableName ADD PRIMARY KEY (columnName);——添加主鍵索引
- 刪除索引
DROP INDEX indexName ON talbeName;
ALTER TABLE tableName DROP INDEX indexName;
ALTER TABLE tableName DROP PRIMARY KEY;
13.修改root用戶密碼
set password for 'root'@'localhost'=password('newpassword');
如果是當前登陸用戶用SET PASSWORD = PASSWORD("newpassword");
丟失root密碼的時候
mysqld_safe --skip-grant-tables&
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
mysql> FLUSH PRIVILEGES;
14.查看mysql中主機、用戶、密碼
select host,user,password from mysql.user;
15.新建mysql用戶
create user 'username'@'host' identified by 'password';
username - 你將創建的用戶名
host - 指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost, 如果想讓該用戶可以從任意遠程主機登陸,可以使用通配符%.
password - 該用戶的登陸密碼,密碼可以為空,如果為空則該用戶可以不需要密碼登陸服務器.
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';
16.刪除用戶
DROP USER 'username'@'host';
17.授權
GRANT privileges ON databasename.tablename TO 'username'@'host'
privileges - 用戶的操作權限,如SELECT/INSERT/UPDATE/DELETE/ALL等
databasename - 數據庫名
tablename-表名
如果要授予該用戶對所有數據庫和表的相應操作權限則可用表示, 如.*
GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
GRANT ALL ON *.* TO 'pig'@'%';
注意:用以上命令授權的用戶不能給其它用戶授權,如果想讓該用戶可以授權,用以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
18.撤銷用戶權限
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
REVOKE SELECT ON *.* FROM 'pig'@'%';
假如你在給用戶'pig'@'%'授權的時候是這樣的(或類似的):
GRANT SELECT ON test.user TO 'pig'@'%'
則在使用REVOKE SELECT ON *.* FROM 'pig'@'%'命令時,并不能撤銷該用戶對test數據庫中user表的SELECT 操作;
相反,如果授權使用的是
GRANT SELECT ON *.* TO 'pig'@'%';
則REVOKE SELECT ON test.user FROM 'pig'@'%'命令也不能撤銷該用戶對test數據庫中user表的Select 權限.
19.查看用戶權限信息
SHOW GRANTS FOR 'pig'@'%'
20.修改密碼時提示錯誤
image.png
發生這一錯誤的原因是在變更了mysql.user表之后,沒有使用FLUSH PRIVILEGES命令來更新權限表
FLUSH PRIVILEGES;
21.mysql查詢時中文顯示亂碼問題
set names 'utf8';
22.mysql刷新
flush privileges
23.查看正在執行的SQL,終止進程
show processlist;
image.png
終止進程
kill 62;
24.臨時修改接受數據包大小上限
set global max_allowed_packet=2*1024*1024*10;
show VARIABLES like '%max_allowed_packet%';