【转】How to create a new user and grant permissions in MySQL
MySQL is one of the most popular database management systems. In this tutorial we will cover the steps needed to create new MySQL user and grant permissions to it in CentOS 6.4, Debian or Ubuntu platform.
Requirements
- CentOS 6.4, Debian or Ubuntu installed on your computer/server
- SSH access (Command line access to the server)
- root privileges
- Basic skills for working on a Linux environment
- LAMP installed on the server
All operation will be executed inside a MySQL prompt with the root user:
mysql -p -u root
You will be prompted to fill in the MySQL root password.
Create a new user
We can create new MySQL user with the following command:
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
where:
- user – the name of the MySQL user which will be created
- password – the password which we want to assign to that user
All MySQL commands are engin with a semicolon (;).
Grant permissions for a user
The next thing that we will have to do is to grant privileges for that user in order to be able to access the MySQL client and to work with the corresponding database/s:
GRANT ALL PRIVILEGES ON database.table TO 'user'@'localhost';
where:
- database – the name of the MySQL database to which we grant access
- table – the name of the database table to which we grant access
We are allowed to use the asterisk wildcard symbol (*) when we want to grant access to all databases/tables:
GRANT ALL PRIVILEGES ON database.* TO 'user'@'localhost';
or
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost';
With the first command we grant all privileges to the MySQL user to all database tables related to the database with name "database".
In the second case access for the user is granted to all databases.
Here is a list of the MySQL privileges which are most commonly used:
- ALL PRIVILEGES – grants all privileges to the MySQL user
- CREATE – allows the user to create databases and tables
- DROP - allows the user to drop databases and tables
- DELETE - allows the user to delete rows from specific MySQL table
- INSERT - allows the user to insert rows into specific MySQL table
- SELECT – allows the user to read the database
- UPDATE - allows the user to update table rows
这里插入一下 如果我们申明 ALL PRIVILEGES 那么所代表的权限将包括:
GRANT SELECT, CREATE, DROP, DELETE, INSERT, UPDATE, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER,
SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT,
CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, USAGE
Here is a sample syntax where only two privileges are granted for the user:
GRANT SELECT, INSERT, DELETE ON database.* TO 'user'@'localhost';
In order for the changes to take effect and the privileges to be saved the following command should be executed at the end:
FLUSH PRIVILEGES;
Remove an existing MySQL user
A MySQL user can be deleted with the following command:
DROP USER 'user'@'localhost'
------------------------------------------------------------------分割线------------------------------------------------------------------
另外补充一点,当我们 drop 掉 user 之后我们将会删除关于该 user 的权限并且删除该账号。
MySQL 的权限是由 user + 生效地址 组成的。所以即使使用 revoke 命令撤销某些权限,也需要带上具体生效的地址比如 localhost 比如 % 代表的「所有远程地址」连接。
另外还需要提一点是, MySQL 在授予权限的时候其实是存在两组权限的。
一个是本地权限 localhost 针对本地生效。
另外一个是 % 为代表的远程访问权限。如果需要任何地方包括本地都能访问,需要将两个权限都设置上,才可以实现,这里是一个坑。
e.g.
mysql> GRANT ALL on maxwell.* to 'maxwell'@'%' identified by 'XXXXXX';
mysql> GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE on *.* to 'maxwell'@'%'; # or for running maxwell locally: mysql> GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE on *.* to 'maxwell'@'localhost' identified by 'XXXXXX';
mysql> GRANT ALL on maxwell.* to 'maxwell'@'localhost'; # if we want block a ip with user
mysql> GRANT USAGE ON *.* TO 'user'@'<blockIP>';
Reference:
https://cloud.tencent.com/developer/article/1056271 MySQL 包含的 29 个权限
https://www.cnblogs.com/richardzhu/p/3318595.html
https://kyup.com/tutorials/create-new-user-grant-permissions-mysql/ How to create a new user and grant permissions in MySQL
http://blog.51cto.com/gfsunny/1554627 浅析mysql主从复制中复制用户的权限管理
https://jaminzhang.github.io/mysql/the-difference-between-localhost-and-127-0-0-1-in-mysql-connection/ MySQL 连接中 localhost 和 127.0.0.1 的区别
【转】How to create a new user and grant permissions in MySQL的更多相关文章
- How To Create a New User and Grant Permissions in MySQL
How to Create a New User Let’s start by making a new user within the MySQL shell: CREATE USER 'newus ...
- How to create/restore a slave using GTID replication in MySQL 5.6
MySQL 5.6 is GA! Now we have new things to play with and in my personal opinion the most interesting ...
- [SQL] 简单新建(create)删除(drop\delete)权限(grant/revoke)修改(set\update)
一.前言 说起来 数据库(Structured Query Language),本站写过很多类似文章. 如: Mysql创建.删除用户 phpMyAdmin 登陆需要密码 记一次裸迁 MySQL 经历 ...
- Can't create a new thread (errno 11) 解决办法 mysql无法连接
问题的现象: 错误信息: ERROR 1135 (00000): Can't create a new thread (errno 11); if you are not out of availab ...
- 转载:Create a Flash Login System Using PHP and MySQL
本文共两部分: 1. http://dev.tutsplus.com/tutorials/create-a-flash-login-system-using-php-and-mysql-part-1- ...
- [Windows Azure] Getting Started with Windows Azure SQL Database
In this tutorial you will learn the fundamentals of Windows Azure SQL Database administration using ...
- LinuxCentos7下安装Mysql8.x以及密码修改
LinuxCentos7下安装Mysql以及密码修改 引言: 之前都是用Docker或者yum自动安装,这次主要是下载压缩包解压安装,中间也有些小波折,记录如下,以供参考: 1.删除旧的MySQL 检 ...
- 基于Apache+php+mysql的许愿墙网站的搭建create database xyq; //创建xyq数据库
1.准备CentOS7与CentOS5的基础配置 2.在两台虚拟机中配置yum. 3.在CentOS7中安装httpd与php与php-mysql PS:截图时已安装 CentOS7 关闭防火墙与se ...
- 13.1.17 CREATE TABLE Syntax
13.1.17 CREATE TABLE Syntax 13.1.17.1 CREATE TABLE ... LIKE Syntax 13.1.17.2 CREATE TABLE ... SELECT ...
随机推荐
- Java开发笔记(六十五)集合:HashSet和TreeSet
对于相同类型的一组数据,虽然Java已经提供了数组加以表达,但是数组的结构实在太简单了,第一它无法直接添加新元素,第二它只能按照线性排列,故而数组用于基本的操作倒还凑合,若要用于复杂的处理就无法胜任了 ...
- sublime 使用快捷键
Goto Anything 快捷键 Ctrl+P (支持模糊匹配) 1,查找文件 在查找框中输入文件目录(知道目录直接输入目录,不知道目录直接输入页面名称即可.支持模糊匹配) index.ht ...
- Timeline Style
from: https://freefrontend.com/css-timelines/ https://bootstrapthemes.co/items/resources/timeline/ h ...
- Dvna for Owasp top 10 2017
简介: DVNA(Damn Vulnerable Node Application),它是一款由Node.js打造的知名WEB漏洞测试平台,或许有些朋友已经使用过.它是用来给使用Node的WEB开发人 ...
- Numpy常用概念-对象的副本和视图、向量化、广播机制
一.引言 在我们操作数组的时候,返回的是新数组还是原数组的链接,我们就需要了解对象副本和视图的区别. 向量化和广播是numpy内部实现的基础. 二.对象副本和视图 我们应该注意到,在操作数组的时候返回 ...
- 请不要在广州.NET俱乐部群里谈郑智话题,谢谢!
收到私聊说代码无国界,但是程序员是有国界的,程序员也有关心国家大事的权力! 我是极度赞同“代码无国界,但是程序员是有国界的,”我也极度赞同程序员也要爱国. 因为我们新兴县六祖镇叶氏家族就有四位爱国 ...
- Neutron server的运行原理(未完待续)
1.Neutron server首先是一个web server, 对于http和https协议的报文进行响应. 2.Neutron server进程里面包含了一个WSGI 应用程序,以及不同模块的pl ...
- EBGP在非直连网络时,需要配置ebgp的最大跳数,否则无法建立非直连的EBGP邻居
结论: 1.默认情况下,EBGP只能在物理直连的路由器之间建立邻居. 2.要想配置非直连设备间的BGP邻居,必须加配置. 组网图: 抓包: 1.默认情况下,EBGP邻居之间的BGP报文的TTL为1. ...
- django源码分析 LazySetting对象
一.django中通过LazySetting对象来获取项目的配置,LazySetting对象有什么特性?为什么使用这个对象? LazySetting顾名思义,就是延迟获取配置内容.比如,我们定义了一个 ...
- 从0开始的Python学习010return语句&DocStrings
return语句 return语句用来从一个函数中 返回 即跳出函数.当然也可以从函数中返回一个值. #return 语句从一个函数返回 即跳出函数.我们也可选从函数返回一个值 def maximum ...