赵工的个人空间


专业技术部分转网页计算转业余爱好部分


 编程语言

常用的编程语言
C#编程语言基础
C#面向对象与多线程
C#数据及文件操作
JavaScript基础
JavaScript的数据类型和变量
JavaScript的运算符和表达式
JavaScript的基本流程控制
JavaScript的函数
JavaScript对象编程
JavaScript内置对象和方法
JavaScript的浏览器对象和方法
JavaScript访问HTML DOM对象
JavaScript事件驱动编程
JavaScript与CSS样式表
Ajax与PHP
ECMAScript6的新特性
Vue.js前端开发
PHP的常量与变量
PHP的数据类型与转换
PHP的运算符和优先规则
PHP程序的流程控制语句
PHP的数组操作及函数
PHP的字符串处理与函数
PHP自定义函数
PHP的常用系统函数
PHP的图像处理函数
PHP类编程
PHP的DataTime类
PHP处理XML和JSON
PHP的正则表达式
PHP文件和目录处理
PHP表单处理
PHP处理Cookie和Session
PHP文件上传和下载
PHP加密技术
PHP的Socket编程
PHP国际化编码
MySQL数据库基础
MySQL数据库函数
MySQL数据库账户管理
MySQL数据库基本操作
MySQL数据查询
MySQL存储过程和存储函数
MySQL事务处理和触发器
PHP操作MySQL数据库
数据库抽象层PDO
Smarty模板
ThinkPHP框架
Python语言基础
Python语言结构与控制
Python的函数和模块
Python的复合数据类型
Python面向对象编程
Python的文件操作
Python的异常处理
Python的绘图模块
Python的NumPy模块
Python的SciPy模块
Python的SymPy模块
Python的数据处理
Python操作数据库
Python网络编程
Python图像处理
Python机器学习
TensorFlow深度学习
Tensorflow常用函数
TensorFlow用于卷积网络
生成对抗网络GAN


首页 > 专业技术 > 编程语言 > MySQL数据库账户管理
MySQL数据库账户管理

在MySQL语句中,是不区分大小写的,但数据库和数据表名是区分大小写的。

1.连接数据库:

Windows的命令对话框输入命令:
C:\>mysql -uroot -p123456;
如果没有输入密码(mysql -uroot -p),系统会提示输入登录密码。
也可以通过MySQL客户端登录,系统会提示输入用户名和密码。
而且可以登录远程数据库,命令格式为:
mysql -h电脑名(IP地址)-u用户名 -p密码
比如:mysql -h127.0.0.1 -uroot -p123456;
为了安全考虑,往往并不使用root用户登录数据库并启动MySQL进程,这时可指定首选的用户名:
mysql --user=non_root_user_name
当然,最好的方法是通过MySQL安装目录中的mysqld_safe启动脚本来进行:
# bin/mysqld_safe --user=mysql &

2.修改用户登录密码:

myslq> admin -u用户名 -p旧密码 password新密码

1)设置管理员密码:

MySQL数据库的系统管理员账户是root,在配置时可以为它指定一个密码。如果要更改这些密码,首先应以root身份连接到MySQL服务器,然后通过mysql -u root命令完成,该命令使用MySQL客户程序连接到服务器。
出现MySQL提示符之后,使用如下命令为系统管理员设置密码:
mysql> set password for root=password(“123456”);
执行后,root用户的密码设置为123456。还可以使用同样的命名对其他用户进行设置或更改密码。

3.退出MySQL服务器:

在MySQL>提示符下输入quit即可退出交互的操作界面。
[root@zht ~]# mysql -p
Enter password
mysql> quit
Bye

mysql> \q
Bye
输入quit命令时不需要分号结束。

4.MySQL权限管理:

MySQL的权限系统总是起作用的。当用户第一次尝试连接时,并且对于后续的动作,MySQL都会检查主机、用户名和密码、命令权限3件事情。所有这些信息都存储在名为mysql的数据库中。在mysql数据库中,有几个和权限相关的表:
·columns_priv:为一个表中的具体字段定义用户权限
·db:为服务器上的所有数据库定义许可
·host:定义连接到一个具体数据库的可接受的主机
·procs_priv:为存储例程定义用户权限
·tables_priv:为一个数据库中的具体的表定义用户权限
·user:为一个具体用户定义命令权限
最少权限原则:一个用户(一个进程),应该拥有能够执行分配给它的任务的最低级别的权限。如果要在网上查询,用户并不需要root用户所拥有的所有权限,需要创建另一个用户,只有用于访问数据库的必要权限。

1)权限的类型和级别:

权限的基本信息一般存储在MySQL数据库的MySQL.user、MySQL.db、MySQL.host、MySQL.tables_priv和MySQL.columns_priv表中。通常赋予一般开发人员的权限如下表:


权限

应用范围

描述

Select

表、列

允许用户从表中选择行(记录)

Insert

表、列

允许用户在表中插入新行

Update

表、列

允许用户修改现存表的行

Delete

允许用户删除现存表的行

Index

允许用户创建和拖动特定表索引

Alter

允许用户改变现存表的结构,比如添加列、重命名或修改数据列类型

Create

数据库、表

允许用户创建新数据库或表

Drop

数据库、表

允许用户拖动(删除)数据库或表

从系统安全方面考虑,适于常规用户的权限大多数是相对无害的。Alter权限通过重命名表可能会影响权限系统,但大多数用户需要。
下表列出了适用于管理员的权限:


权限

描述

Create temporary tables

允许管理员创建临时表

File

允许将数据从文件读入表,或从表读入文件

Lock tables

允许使用Lock tables语句来锁定数据库表

Process

允许管理员查看属于所有用户的服务进程

Reload

允许管理员重新载入授权表、清空授权、主机、日志和表格

Replication client

允许在复制主机(master)和从机(slave)上使用show status

Replication databases

允许复制从服务器连接到主服务器

Show databases

允许使用show databases语句查看数据列表,否则只能查看能够看的数据库

shutdown

允许管理员关闭MySQL服务器

super

允许管理员关闭属于任何用户的线程

在使用上表权限时要非常小心。File权限有些不同,对普通用户非常有用,因为可以将数据从文件载入数据库,从而可以节省很多时间。然而,文件载入可以用来载入MySQL可识别的任何文件,包括属于其他用户的数据库和潜在的密码文件。
此外,还存在两个特别的权限:


权限

描述

All

授予上面两个表的所有权限,也可以将all写成all privileges

Usage

不授予权限。这会创建一个用户并允许他登录,但是不允许进行任何操作。通常会在以后授予该用户更多的权限

大多数情况下,当通过一个Internet服务提供商访问MySQL的时候,只有一个用户和一个数据库可供使用。默认情况下,一个用户可以访问该数据库中所有的表,并且允许执行所有的命令。这种情况下,作为开发者的职责就是通过编程开发出一个安全的应用程序。

2)增加新用户:

如果拥有服务器的管理员权限,或者Internet服务提供商允许用户添加任意多个数据库和用户,并且可以修改用户的访问权限,就可以使用下述的操作。
1)GRANT命令:
GRANT命令用来创建用户并授权,这些权限分为全局、数据库、表和列4个级别。格式为:
GRANT privileges [columns] ON item
TO user_name [IDENTIFIED BY ‘password’]
[REQUIRE ssl_options]
[WITH [GRANT OPTION | limit_options]];
上面表达式中,方括号内的选项表示是可选的。在上述语法中,出现了许多占位符。占位符privileges是由逗号分开的一组权限;参数columns是可选的,用来对每一个列指定权限,可以使用单列的名称或用逗号分开的一组列的名称;参数item表示新授权所应用于的数据库或表。
可以将项目item指定为“*.*”,而将授权应用于所有数据库,这是赋予全局权限。如果没有使用在任何特定的数据库中,也可以通过只指定“*”完成赋予全局权限。更常见的是,以“dbname.*”的形式指定数据库中的所有表,以“dbname.tablename”的形式指定单个表,或者通过指定tablename来指定特定的列。这些分别表示3个可以利用的权限:数据库、表、列。如果在输入命令的时候正在使用一个数据库,tablename本身将解释成当前数据库中的一个表。
参数user_name表示要被授权的用户名,用户名不必与登录系统时使用的名称一样,MySQL中的user_name也可以包含一个主机名,可以用来区分如guai(即guai@localhost)和guai @somewhere.com,因为来自不同域的用户经常可能使用同一个名字。这也提高了安全性,因为可以指定用户从什么地方连接到本机,甚至可以指定在某些特定的地方可以访问哪些表和数据库。
参数password表示用户登录的时候应该使用的密码,在授权的时候应尽量使用密码。
REQUIRE字句允许指定用户是否必须通过加密套接字连接,或者指定其他的SSL选项。WITH GRANT OPTION选项,如果指定,表示允许指定的用户向别人授予自己所拥有的权限。用户可以指定如下的WITH字句:
·MAX_QUERIES_PER_HOUR#:指定用户每小时能够执行的最大查询次数
·MAX_UPDATE_PER_HOUR#:指定用户每小时能够执行的最大更新次数
·MAX_CONNECTIONS_HOUR#:指定用户每小时能够执行的最大连接数量
示例:创建用户join在myDB数据库中的所有表上都有SELECT和INSERT权限
GRANT SELECT, INSERT
ON myDB.*
TO join@”%”
IDENTIFIED BY “123456”;
注意通配符*和%,*代替了数据库中所有的表,%则替代了所有主机。
示例2:添加用户jane在myCompany数据库的employees表上具有ALL权限
GRANT ALL
ON myCompany.employees
TO jane@janescomputer.company.com
IDENTIFIED BY “123456”;
上述授权只能从一个特定的主机连接。如果知道janescomputer.company.com的IP地址,也可以使用这个地址来替代命令中的主机部分:
GRANT ALL
ON myCompany.employees
TO jane@’63.124.45.2’
IDENTIFIED BY “123456”;

2)REVOKE命令:

REVOKE命令与GRANT相反,是用来收回权限。格式为:
REVOKE privileges [(columns)] ON item FROM user_name;
如果授权时给出了WITH GRANT OPTION字句,可以按如下方式撤销:
REVOKE privileges,GRANT FROM user_name;
示例:创建管理员
mysql>grant all on *
     >to huanghai indentified by ‘123456’
     >with grant option;
上述代码,授予用户名为huanghai密码为123456的用户使用所有数据库权限,并允许向其他人授权的权限。
可以使用以下代码撤销:
mysql>revoke all on privileges, grant
     >from huanghai;
创建一个没有任何授权的常规用户:
mysql>grant usage on tables.*
     >to huanghai indentified by ‘123456’;
以后可以对huanghai适当授权:
mysql>grant select,insert,update, delete, alter, creat, drop
     >on tables.* to huanghai;
如果认为黄海的权限过高,可以减少部分权限:
mysql>revoke alter, drop
     >on tables.* from huanghai;
也可以将其权限全部收回:
mysql>revoke all on tables.* from huanghai;
注意:输入的命令必须以分号结束,如果没有分号使用回车,就会成为续行。

4)查看所有用户:

在创建了一系列的用户后,管理员可以查看所有用户,代码为:
mysql>use mysql;
mysql>select * from user;
上面第1行语句表示使用了系统管理数据库MySQL;第2行语句的作用是从user表中查询出所有的用户。

Copyright@dwenzhao.cn All Rights Reserved   备案号:粤ICP备15026949号
联系邮箱:dwenzhao@163.com  QQ:1608288659