1 MySQL用户管理
1.1 查询用户
mysql> use mysql;
mysql> select * from user;
1.2 创建用户
#主机名可使用%表示所有的主机
mysql> create user '用户名'@'主机名' identified by '密码';
1.3 删除用户
mysql> drop user 'mytest'@'localhost';
1.4 修改用户密码
#可选下面两种写法
mysql> update user set password = password('new_password') where user = 'mytest';
mysql> set password for 'mytest'@'localhost' = password('new_password');
2 MySQL 权限管理
2.1 查看用户权限
#show grants for '用户名'@'主机名'
mysql> show grants for 'mytest'@'%';
2.2 用户授权
#grant 权限列表 on 数据库名.表名 to '用户名'@'主机名'; (多个权限需要使用逗号隔开)
mysql> grant all on *.* to 'mytest'@'%';
2.3 取消权限
#revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
mysql> revoke select on company.account from 'mytest'@'%';
3 MySQL 四种连接方式
3.1 TCP/IP
TCP/IP连接方式是MySQL在任何平台都提供的一种连接方式,通过TCP/IP连接建立一个网络连接
mysql -uroot -h127.1 -p
远程连接的客户端连接的用户有权限才可以被连接 , 可通过查询 schema mysql 中的 user 表来得知用户是否具有连接权限
3.2 Unix Socket
在Linux与Unix环境下,可使用Unix套接字连接,只能在MySQL客户端与数据库实例在同一台服务器的情况下使用
mysql -u root -S /tmp/mysql.sock
-S 是 --socket 的简写形式 , 其值必须与服务器配置文件中指定路径相同,此类连接性能优于TCP/IP
3.3 Named Pipe
仅用于Windows下的连接,性能优于TCP/IP 30%~50%
mysql -u username -p password --protocol=pipe [ --socket=mysql ]
3.4 Shared Memory
在4.1版本之后 , MySQL对Windows系统还提供了共享内存的连接方式
mysql --protocol=memory --shared-memory-base-name=mysql
4 MySQL 字符集设置
4.1 查看当前数据库字符集
mysql> show variables like '%character%';
+--------------------------+-----------------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/Percona-Server-5.7.19-17/share/charsets/ |
+--------------------------+-----------------------------------------------------+
8 rows in set (0.00 sec)
4.2 设置字符集
-
创库时设置
mysql> create database db default character set=utf8;
创表时设置
create table tb(a char(2) not null primary key)default character set=utf8mb4;
创库后设置
mysql> alter database db default character set gbk;
创表后设置
mysql> alter table tb convert to character set utf8;
字段级设置mysql> alter table tb modify 备注 text character set utf8mb4;
/*建立连接使用的编码*/
mysql> set character_set_connection=utf8;
/*数据库的编码*/
mysql> set character_set_database=utf8;
/*结果集的编码*/
mysql> set character_set_results=utf8;
/*数据库服务器的编码*/
mysql> set character_set_server=utf8;
mysql> set character_set_system=utf8;
mysql> set collation_connection=utf8;
mysql> set collation_database=utf8;
mysql> set collation_server=utf8;
/*建立连接使用的编码*/
mysql> set character_set_connection=utf8;
/*数据库的编码*/
mysql> set character_set_database=utf8;
/*结果集的编码*/
mysql> set character_set_results=utf8;
/*数据库服务器的编码*/
mysql> set character_set_server=utf8;
mysql> set character_set_system=utf8;
mysql> set collation_connection=utf8;
mysql> set collation_database=utf8;
mysql> set collation_server=utf8;
set指令仅临时生效,永久生效需设置到my.cnf文件