如何给MySql创建连接用户并授权

【转自】http://www.metsky.com/archives/6.html,中间有些部分本人有所改动!

SQL语句中蓝色的字段表示根据自己使用情况进行命名,例子相见文章结尾。

一般在为MySql创建用户时建议使用GRANT前台命令,最好不要直接去改数据库,以前一直都是习惯于直接去改数据库,现在慢慢学着把这个缺点改掉,开始使用命令授权创建,最近在使用MySQL时,要添加用户,直接用PHPMYADMIN增加用户出现ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value错误,根本也不会用GRANT命令,因为它太容易忘记,本文特别把命令精简一下供以后参考(MYSQL命令行下)。

1、首先登录MYSQL的COMMAND控制台

Mysql安装后都会带CMD命令行控制台,如下图,也可以直接使用CMD命令台,运行mysql安装目录bin下的mysql.exe,输入mysql -u root和密码即可登录到Mysql。

mysql\bin目录下的可执行程序及功能一览如下表(参考官方MYSQL说明):

mysqldMySQL服务器
mysqld_safe、mysql.server和mysqld_multi服务器启动脚本
mysql_install_db初始化数据目录和初始数据库
mysql一个命令行客户程序,用于交互式或以批处理模式执行SQL语句。
mysqladmin用于管理功能的客户程序。
mysqlcheck执行表维护操作。
mysqldump和mysqlhotcopy负责数据库备份。
mysqlimport导入数据文件。
mysqlshow显示信息数据库和表的相关信息。
myisamchk执行表维护操作。
myisampack产生压缩、只读的表。
mysqlbinlog是处理二进制日志文件的实用工具。
perror显示错误代码的含义。

2、选择数据表

语句如下:use mysql;

3、在mysql的user表中增加连接用户帐号:

这里不要直接使用INSERT语句添加user记录,使用INSERT可能出现:

ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value错误。不过早期的MYSQL版本笔者倒没出现这个错误,因为天缘一直都是直接修改user表或直接使用INSERT语句完成,后来升级MYSQL到5.1的时候,发现可能会出现这个错误。

建议使用GRANT语句进行授权,语句如下:

GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

上句:

“username”替换为将要授权的用户名,比如clientusr;

“password”替换为clientusr设置的密码;

4、可访问数据表授权

创建好帐户之后,就开始给上面的common user进行数据表授权,步骤3中增加的连接用户默认权限都是“N”的,必须在db表中为该帐户授权,允许其访问专用数据库,当然超级用户就不说了。

使用下面语句:

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON tablename.*  TO 'username'@'localhost' IDENTIFIED BY 'password';

本语句中的权限根据实际需要确定:

"tablename"替换为授权访问的数据表table名

"username"是步骤2授权用户名

"password"是步骤2授权用户的设置密码

这样就为该用户授予了对某数据表的SELECT, INSERT, UPDATE, DELETE, CAREATE, DROP权限。

5、生效授权,创建完毕

一句话即可:FLUSH PRIVILEGES;

5、实例

  1.进入mysql命令行窗口下
        2.输入密码:root密码;
3.选择使用的数据库:use 数据库名;
4.创建新用户
grant usage on *.* to 'username'@'localhost' identified by 'password' with grant option;
5.给创建的用户授权
GRANT SELECT ,INSERT,UPDATE,DELETE,CREATE,DROP ON tablename.* TO 'username'@'localhost' IDENTIFIED BY 'password';    //用户名,密码同上面一样
6.生效授权
FLUSH PRIVILEGES;

这样就创建了一个名为username,登录密码为password的新增用户,该用户有SELECT ,INSERT,UPDATE,DELETE,CREATE,DROP权限。

### 如何在 MySQL创建用户授予视图权限 在 MySQL 数据库管理系统中,可以通过 `CREATE USER` 和 `GRANT` 命令来实现用户创建以及特定权限的分配。以下是具体方法: #### 创建用户创建一个新的 MySQL 用户,可以使用以下命令: ```sql CREATE USER 'new_user'@'host' IDENTIFIED BY 'password'; ``` 这里的 `'new_user'` 是用户名,`'host'` 表示该用户可以从哪个主机连接数据库(通常设置为 `'localhost'` 或 `%`),而 `'password'` 则是密码[^1]。 #### 授予视图权限 为了使某个用户能够访问指定的视图而不具备修改底层数据的能力,需要执行如下操作: 1. **创建视图** 首先确保已经存在一个视图或者可以根据需求创建新的视图。 ```sql CREATE VIEW my_view AS SELECT column_name(s) FROM table_name WHERE condition; ``` 2. **授予权限给用户** 使用 `GRANT` 语句赋予目标用户查看视图的权利。例如: ```sql GRANT SELECT ON database_name.my_view TO 'new_user'@'host'; ``` 这条指令仅允许用户通过查询视图获取信息,而不是直接访问基础表的数据结构或内容[^2]。 3. **刷新权限** 完成上述步骤之后,建议运行下面这条命令以确保更改立即生效: ```sql FLUSH PRIVILEGES; ``` 以上过程展示了如何安全有效地向特定用户提供只读级别的视图访问权,同时保护原始表格不受未授权改动的影响[^3]。 #### 示例脚本 假设我们有一个名为 `employees` 的数据库希望让一位名叫 `report_viewer` 的同事能查阅其中关于员工薪资汇总的信息,则可按此方式编写 SQL 脚本: ```sql -- Step 1: Create View USE employees; CREATE OR REPLACE VIEW salary_summary AS SELECT department_id, AVG(salary) as avg_salary FROM salaries GROUP BY department_id; -- Step 2: Add New User & Assign Permission CREATE USER 'report_viewer'@'%' IDENTIFIED BY 'secure_password_123!'; GRANT SELECT ON employees.salary_summary TO 'report_viewer'@'%'; FLUSH PRIVILEGES; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值