root远程访问授权
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> use mysql;
Database changed
--允许在Liang-PC上以root/123456登录
mysql> grant all privileges on *.* to 'root'@'Liang-PC' identified by '123456' with grant option;
Query OK, 0 rows affected, 1 warning (0.02 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> select host,user from user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| liang-pc | root |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
4 rows in set (0.00 sec)
MySQL Workbench 8.0 CE
Ctrl+Enter 运行当前语句
#查询数据库连接
show full processlist;
show status like '%Max_used_connections%';
show status like '%Threads_connected%'; #当前连接数
show status like '%table_lock%'; #表锁定
show status like 'innodb_row_lock%'; #行锁定
show status like '%qcache%'; #查询缓存情况
show variables like "%query_cache%";
SHOW STATUS LIKE 'Qcache%';
show variables like "%binlog%";
show status like 'Aborted_clients'; #由于客户没有正确关闭连接已经死掉,已经放弃的连接数量
show variables like '%max_connections%'; #查看最大连接数量
show variables like '%timeout%'; #查看超时时间
show variables like 'log_%'; #查看日志是否启动
mysql注释符
单行注释:#abc 或 -- abc
这里注意oracle/mssql的--注释不需要空格,但mysql的一定要有空格。
多注释:
/*
Abc
*/
创建数据库/Schemas
-- 查看 datadir 位置
show variables like '%dir%';
show variables like 'datadir';
Show databases;
等价
select schema_name from information_schema.schemata
use mysql;
show tables;
SHOW COLUMNS FROM user;
等价
describe user;
1、使用create database语句创建数据库
CREATE DATABASE IF NOT EXISTS study DEFAULT CHARSET utf8;
create database if not exists study default character set = 'utf8';
2、查看创建的DB的字符集
select schema_name,default_character_set_name
from information_schema.schemata where schema_name = 'study';
3、通过链接符,改变数据库物理位置
a).关闭服务
b).移动目录
c).mklink /j "C:ProgramDataMySQLMySQL Server 5.7Datastudy" D:mysqldatastudy
d).启动服务
findstr "^[^#]" "C:ProgramDataMySQLMySQL Server 5.7my.ini"
4、创建表
CREATE TABLE `study`.`a_temp01` (
`id` INT NULL,
`text` VARCHAR(45) NULL);
创建用户并授权
CREATE USER 'ustudy'@'%' IDENTIFIED BY 'ustudy';
flush privileges;
select host,user from mysql.user;
GRANT all privileges ON study.* TO 'ustudy'@'%';
方法分成三种:INSERT USER表的方法、CREATE USER的方法、GRANT的方法,最终在mysql.user中形成记录。
账号的组成方式:用户名+主机(所以可以出现重复的用户名,跟其他的数据库不一样)
用户名:16字符以内.
主机名:可以用主机名和IP地址,也可以用通配符
通配符说明:172.18.10.%(IP地址为172.18.10段的所有IP地址都可以访问)
CREATE USER的方法
CREATE USER 'username'@'host' [IDENTIFIED BY 'PASSWORD'];
说明:该方法创建出来的用户只有连接数据库的权限,需要后续继续授权;
GRANT的方法
GRANT privileges ON databasename.tablename TO 'username'@'host' [identified by ‘password’ WITH GRANT OPTION];
privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名
tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
当数据库存在用户的时候GRANT会对用户进行授权,但当数据库不存在该用户的时候,就会创建相应的用户并进行授权。
例子:
mysql>grant select,insert,update,delete on test.hr to john@192.168.10.1 INSERT USER表的方法123';
说明:给主机为192.168.10.1的用户john分配可对数据库test的hr表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。
mysql>grant all privileges on test.* to joe@192.168.10.1 identified by '123';
说明:给主机为192.168.10.1的用户john分配可对数据库test所有表进行所有操作的权限,并设定口令为123。
mysql>grant all privileges on *.* to john@192.168.10.1 identified by '123';
说明:给主机为192.168.10.1的用户john分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。
mysql>grant all privileges on *.* to john@localhost identified by '123';
说明:用户john分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。
查看用户权限:等价
SHOW grants FOR ustudy;
SHOW GRANTs FOR 'ustudy'@'%';
show CREATE database study; 这个可以看到创建study数据库时用到的一些参数。
show create table study.a_temp01; 可以看到创建study.a_temp01表时用到的一些参数
INSERT USER表的方法
插入方法:创建用户
mysql> insert into user (host,user,password) values ('%','john',password('123'));
mysql>flush privileges;
SET PASSWORD
设置与更改用户密码
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
如果是当前登陆用户用:
SET PASSWORD = PASSWORD("newpassword");
撤销用户权限:由grant变REVOKE
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
删除用户
DROP USER 'username'@'host';