CREATE DATABASE `apollodb` DEFAULT CHARACTER SET utf8 COLLATE _mysql5.7新建数据">
赞
踩
目录
MySQL安装启动成功后,首先我们需要创建数据库,然后创建一个用户去操作这个数据库。
- // 登录MySQL客户端:mysql -h [ip] -u[username] -p[password]
- C:\Users\Administrator>mysql -h 127.0.0.1 -uroot -p"root"
- // 创建数据库,指定字符集
- mysql> CREATE DATABASE `apollodb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
- // 查看数据库是否创建成功
- mysql> show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | apollodb |
- | mysql |
- | performance_schema |
- | sys |
- +--------------------+
- 5 rows in set (0.00 sec)
-
- //如果库名写错了,当然如果库名创建错了,也可以使用命令进行删除,然后重新创建:
- mysql> drop database apollodb;
跟以往版本不同,MySQL5.7 mysql.user表没有password字段,这个字段改成了 authentication_string;
这里我们使用命令进行创建用户:
- // 创建了一个名为:dev001 密码为:123456 的用户
- mysql> create user 'dev001'@'localhost' identified by '123456';
- // 注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。
- // 如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。
- // 也可以指定某台机器ip可以远程登录。
- // ##### 实际开发用“%”方式 #####
- mysql> create user 'dev001'@'%' identified by '123456';
- // 删除用户“dev001”
- mysql> drop user dev001@localhost ;
- // 若创建的用户允许任何电脑登陆,删除用户如下
- mysql> drop user dev001@'%';
- // 方法1,密码实时更新;修改用户“dev001”的密码为“1qaz@WSX”
- mysql> set password for dev001=password('1qaz@WSX');
-
- // 方法2,需要刷新;修改用户“dev001”的密码为“1qaz@WSX”
- mysql> update mysql.user set password=password('1qaz@WSX') where user='dev001'
- // 刷新权限
- mysql> flush privileges;
- // 策略一:授予用户kvstore通过外网IP对数据库“apollodb”的全部权限
- mysql> grant all privileges on apollodb.* to 'dev001'@'%' identified by '1qaz@WSX';
- // 刷新权限
- mysql> flush privileges;
-
- // 策略二:授予用户“dev001”通过外网IP对于该数据库“apollodb”中表的创建、修改、删除权限,以及表数据的增删查改权限
- mysql> grant create,alter,drop,select,insert,update,delete on apollodb.* to dev001@'%';
- // 刷新权限
- mysql> flush privileges;
-
- // 策略三:授权dev001用户拥有所有数据库的某些权限
- mysql> grant select,delete,update,create,drop on *.* to dev001@'%' identified by '1qaz@WSX';
- // 刷新权限
- mysql> flush privileges;
privileges:用户的操作权限,如select,delete,update,create,drop等;如果要授予所有的权限可使用all;% 表示对所有非本地主机授权,不包括localhost。
- // 查看用户“dev001”
- mysql> show grants for dev001;
- +------------------------------------------------------+
- | Grants for dev001@% |
- +------------------------------------------------------+
- | GRANT USAGE ON *.* TO 'dev001'@'%' |
- | GRANT ALL PRIVILEGES ON `apollodb`.* TO 'dev001'@'%' |
- +------------------------------------------------------+
- 2 rows in set (0.00 sec)
-
- // MySQL通过权限表来控制用户对数据库的访问,权限表放在mysql数据库中,常见的有user表。
- mysql> use mysql;
- Database changed
- // 查看用户权限
- mysql> select user,host from user;
- +---------------+-----------+
- | user | host |
- +---------------+-----------+
- | dev001 | % |
- | dev001 | localhost |
- | mysql.session | localhost |
- | mysql.sys | localhost |
- | root | localhost |
- +---------------+-----------+
- 5 rows in set (0.02 sec)
-
- mysql>
注意:修改完权限以后 一定要刷新服务,或者重启服务,刷新服务用:flush privileges;
最后用MySQL的dev001用户登录查看是否有对apollodb数据库的操作权限:
- C:\Users\Administrator>mysql -h 192.168.0.200 -udev001 -p"1qaz@WSX"
- mysql> mysql> show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | apollodb |
- +--------------------+
- 2 rows in set (0.00 sec)
-
- mysql> show grants for dev001;
- +------------------------------------------------------+
- | Grants for dev001@% |
- +------------------------------------------------------+
- | GRANT USAGE ON *.* TO 'dev001'@'%' |
- | GRANT ALL PRIVILEGES ON `apollodb`.* TO 'dev001'@'%' |
- +------------------------------------------------------+
- 2 rows in set (0.00 sec)
用户名@可访问控制列表
如文章开头的数据表查询,解析如下:
(root, localhost) 表示只可以在部署mysql的服务器上登录;
(root, 192.168.1.%) 表示可以在192.168.1网段登录MySQL;
(root, %) 表示可以从除了本地外的所有外部主机登录,即允许远程登录;
(root, sla01) 表示主机名为sla01可以登陆(可以在/etc/hostname
查看sla01代表哪台服务器。
分类 | 语句 | 说明 |
---|---|---|
管理员 | create user | 建立新用户的权限 |
grant option | 为其它用户授权的权限 | |
super | 管理服务器的权限 | |
DDL | create | 新建数据库,表的权限 |
alter | 修改表结构的权限 | |
drop | 删除数据库,表的权限 | |
index | 建立删除索引的权限 | |
DML | select | 查询表数据的权限 |
insert | 表中插入数据的权限 | |
update | 更新表中数据的权限 | |
delete | 删除表中数据的权限 | |
execute | 执行存储过程的权限 |
- mysql> show privileges;
- +-------------------------+---------------------------------------+-------------------------------------------------------+
- | Privilege | Context | Comment |
- +-------------------------+---------------------------------------+-------------------------------------------------------+
- | Alter | Tables | To alter the table |
- | Alter routine | Functions,Procedures | To alter or drop stored functions/procedures |
- | Create | Databases,Tables,Indexes | To create new databases and tables |
- | Create routine | Databases | To use CREATE FUNCTION/PROCEDURE |
- | Create temporary tables | Databases | To use CREATE TEMPORARY TABLE |
- | Create view | Tables | To create new views |
- | Create user | Server Admin | To create new users |
- | Delete | Tables | To delete existing rows |
- | Drop | Databases,Tables | To drop databases, tables, and views |
- | Event | Server Admin | To create, alter, drop and execute events |
- | Execute | Functions,Procedures | To execute stored routines |
- | File | File access on server | To read and write files on the server |
- | Grant option | Databases,Tables,Functions,Procedures | To give to other users those privileges you possess |
- | Index | Tables | To create or drop indexes |
- | Insert | Tables | To insert data into tables |
- | Lock tables | Databases | To use LOCK TABLES (together with SELECT privilege) |
- | Process | Server Admin | To view the plain text of currently executing queries |
- | Proxy | Server Admin | To make proxy user possible |
- | References | Databases,Tables | To have references on tables |
- | Reload | Server Admin | To reload or refresh tables, logs and privileges |
- | Replication client | Server Admin | To ask where the slave or master servers are |
- | Replication slave | Server Admin | To read binary log events from the master |
- | Select | Tables | To retrieve rows from table |
- | Show databases | Server Admin | To see all databases with SHOW DATABASES |
- | Show view | Tables | To see views with SHOW CREATE VIEW |
- | Shutdown | Server Admin | To shut down the server |
- | Super | Server Admin | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc. |
- | Trigger | Tables | To use triggers |
- | Create tablespace | Server Admin | To create/alter/drop tablespaces |
- | Update | Tables | To update existing rows |
- | Usage | Server Admin | No privileges - allow connect only |
- +-------------------------+---------------------------------------+-------------------------------------------------------+
- 31 rows in set (0.00 sec)
命令:
revoke [insert,delete,update,select ...] on Databasename.Tablename from 'username'@'ip';
命令:
show grants for 'username'@'ip';
drop user 'username'@'ip';
- update mysql.user set authentication_string=password('password') where user='root' and host = 'localhost';
- flush privileges;
- # 新设置用户或更改密码后需用flush
修改MySQL的配置文件(my.ini),在[mysqld]下添加一行skip-grant-tables,重启MYSQL后就不需要密码了。
重启后,mysql -u root -p
登入数据库
update mysql.user set authentication_string=password('password') where user='root' and host = 'localhost';
flush privileges;
删除skip-grant-tables这一行,重新启动 MySQL。
最小权限原则;
复杂密码强度策略;
密码过期和限制重用原则;
字段名称 | 说明 |
权限列 | |
Host | 主机名,值为%时表示允许非本地的其它所有机器登录 |
User | 用户名 |
Select_priv | 确定用户是否有权限使用select命令查询数据 |
Insert_priv | 确定用户是否有权限使用insert命令插入数据 |
Update_priv | 确定用户是否有权限使用update命令更新数据 |
Delete_priv | 确定用户是否有权限使用DELETE命令删除数据 |
Create_priv | 确定用户是否有权限使用create命令创建数据库和表 |
Drop_priv | 确定用户是否有权限使用drop命令删除数据库和表 |
Reload_priv | 确定用户是否有权限执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表重新加载权限表 |
Shutdown_priv | 确定用户是否有权限关闭MySQL服务器在将此权限提供给root账户之外的任何用户时 |
Process_priv | 确定用户是否有权限通过SHOW PROCESSLIST命令查看其他用户的进程 |
File_priv | 确定用户是有权限执行SELECT INTO OUTFILE和LOAD DATA INFILE命令 |
Grant_priv | |
References_priv | |
Index_priv | |
Alter_priv | |
Show_db_priv | |
Super_priv | |
Create_tmp_table_priv | |
Lock_tables_priv | |
Execute_priv | |
Repl_slave_priv | |
Repl_client_priv | |
Create_view_priv | |
Show_view_priv | |
Create_routine_priv | |
Alter_routine_priv | |
Create_user_priv | |
Event_priv | |
Trigger_priv | |
Create_tablespace_priv | |
安全列 | |
ssl_type | 支持ssl标准加密安全字段 |
ssl_cipher | 支持ssl标准加密安全字段 |
x509_issuer | 支持x509标准字段 |
x509_subject | 支持x509标准字段 |
password_expired | 密码是否过期。Y:说明该用户密码已过期 N:没有过期 |
password_last_changed | |
password_lifetime | |
plugin | 5.5.7开始,mysql引入plugins以进行用户连接时的密码验证,plugin创建外部/代理用户 |
authentication_string | 通过authentication_string可以控制两者的映射关系,(PAM plugin等,PAM可以支持多个服务名) |
资源控制列 | |
max_questions | 每小时允许执行多少次查询:0表示无限制 |
max_updates | 每小时可以执行多少次更新:0表示无限制 |
max_connections | 每小时可以建立的多少次连接:0表示无限制 |
max_user_connections | 单用户可以同时具有的连接数:0表示无限制 |
account_lock |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。