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的更多相关文章

  1. 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 ...

  2. 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 ...

  3. [SQL] 简单新建(create)删除(drop\delete)权限(grant/revoke)修改(set\update)

    一.前言 说起来 数据库(Structured Query Language),本站写过很多类似文章. 如: Mysql创建.删除用户 phpMyAdmin 登陆需要密码 记一次裸迁 MySQL 经历 ...

  4. 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 ...

  5. 转载: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- ...

  6. [Windows Azure] Getting Started with Windows Azure SQL Database

    In this tutorial you will learn the fundamentals of Windows Azure SQL Database administration using ...

  7. LinuxCentos7下安装Mysql8.x以及密码修改

    LinuxCentos7下安装Mysql以及密码修改 引言: 之前都是用Docker或者yum自动安装,这次主要是下载压缩包解压安装,中间也有些小波折,记录如下,以供参考: 1.删除旧的MySQL 检 ...

  8. 基于Apache+php+mysql的许愿墙网站的搭建create database xyq; //创建xyq数据库

    1.准备CentOS7与CentOS5的基础配置 2.在两台虚拟机中配置yum. 3.在CentOS7中安装httpd与php与php-mysql PS:截图时已安装 CentOS7 关闭防火墙与se ...

  9. 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 ...

随机推荐

  1. [日常] Go-逐行读取文本信息

    go逐行读取文本信息:1.os包提供了操作系统函数的不依赖平台的接口,Open方法打开一个文件用于读取,func Open(name string) (file *File, err error)2. ...

  2. JavaWeb学习日记----SAX解析XML

    1.SAX解析XML文档的方式: 与DOM方式解析不同,DOM方式解析是根据XML的层级结构在内存中分配一个树形结构,把xml的标签,属性和文本都封装成对象.优点是可以很方便实现增删改操作.缺点是,如 ...

  3. 生产者消费者C++实现

    #include<string>#include<iostream>#include<process.h>#include<windows.h>#inc ...

  4. append和appendTo的区别!

    今天在写dome的时候,碰到了一小点问题,就是我们想把一个小效果用jquery的办法添加到HTML页面中.我用的办法就是先在HTML中把代码写完,js和css同样写好并调试完成后.然后只保存外面最大的 ...

  5. Java实现登录验证码

    登录验证码 Servlet /* 从请求中获取数据,获取验证码的session的值转为String类型,       销毁,防止返回后验证码不刷新,重新验证成功       判断验证码是否相同(忽略大 ...

  6. 【AO笔记】有关TIN数据集的常用介绍

    写论文查了很多TIN的接口和属性,特此来记录一下. 转载请注明出处:博客园@秋意正寒,B站同名. 未完待续 1. Tin数据集在ArcGIS中的描述 Tin数据集在磁盘中,被ArcGIS以文件夹形式管 ...

  7. 【面向对象设计原则】之开闭原则(OCP)

    开闭原则是面向对象设计的一个重要原则,其定义如下: 开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放,对修改关闭.即软件实体应尽量在不修改原有代码的情况下进 ...

  8. Arcgis瓦片--数据获取

    Arcgis的二维地图瓦片有两种获取方式 1.在Arcmap中对配置好的地图进行切图,生成对应瓦片 2.使用第三方的地图下载器,直接下载,导出成arcgis瓦片格式即可使用. 备注:这里主要介绍第二种 ...

  9. 安卓开发:UI组件-RadioButton和复选框CheckBox

    2.5RadioButton 为用户提供由两个及以上互斥的选项组成的选项集. 2.5.1精简代码 在按钮变多之后,多次重复书写点击事件有些繁琐,我们在这里创建一个事件OnClick,每次点击时调用该事 ...

  10. delphi做的程序如何连接SQL数据库

    1. 新建一个FORM.在控件栏找到ADO一栏,把里面的ADOConnection和ADOQuery两个各建立一个放在FORM里.这两个控件运行后是不可见的,所以你可以随便放在FORM的任何位置.然后 ...