
数据库的安全性是我们非常注重的事情,MySQL数据库同样有自己的安全机制,用户必须要通过授予MySQL用户权限命令,才可以得到权限,进行操作。
MySQL可以为不同的用户分配严格的、复杂的权限。这些操作大多都可以用SQL指令Grant(分配权限)和Revoke(回收权限)来实现授予MySQL用户权限。 Grant可以把指定的权限分配给特定的用户,如果这个用户不存在,则会创建一个用户。
授予MySQL用户权限的命令Grant 常用格式:
grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;
权限1,权限2,…权限n代表select,INSERT,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。当数据库名称.表名称被*.*代替,表示赋予用户操作 服务器 上所有数据库所有表的权限。用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%’表示从任何地址连接。‘连接口令’不能为空,否则创建失败。
比较重要的是priveleges(权限)。普通用户的权限权限应用于描述SELECT表,列允许用户从表中选择行(记录)INSERT表,列允许用户在表中插入新行UPDATE表,列允许用户修改现存表里行中的值DELETE表允许用户删除现存表的行INDEX表允许用户创建和拖动特定表索引ALTER表允许用户改变现存表的结构。例如,可添加列、重命名列或表、修改列的数据类型CREATE数据库,表允许用户创建新数据库或表。如果在GRANT中指定了一个特定的数据库或表,他们只能够创建该数据库或表,即他们必须首先删除(Drop)它DROP数据库,表允许用户拖动(删除)数据库或表
管理员权限权限描述CREATE TEMPORARY TABLES允许管理员在CREATE TABLE语句中使用TEMPORARY关键字FILE允许将数据从文件读入表,或从表读入文件LOCK TABLES允许使用LOCK TABLES语句PROCESS允许管理员查看属于所有用户的服务器进程RELOAD允许管理员重新载入授权表、清空授权、主机、日志和表格REPLICATION CLIENT允许在复制主机(Master)和从机(Slave)上使用SHOW STATUSREPLICATION SLAVE允许复制从服务器连接到主服务器SHOW>
如何让mysql以root用户远程登陆mysql数据库
开启MySQL的远程登陆帐号有两大步:1、确定服务器上的防火墙没有阻止3306端口。 MySQL默认的端口是3306,需要确定防火墙没有阻止3306端口,否则远程是无法通过3306端口连接到MySQL的。 如果您在安装MySQL时指定了其他端口,请在防火墙中开启您指定的MySQL使用的端口号。 如果不知道怎样设置您的服务器上的防火墙,请向您的服务器管理员咨询。 2、增加允许远程连接MySQL用户并授权。 1)首先以root帐户登陆MySQL在Windows主机中点击开始菜单,运行,输入“cmd”,进入控制台,MySQL的bin目录下,然后输入下面的命令。 在Linux主机中在命令提示行下输入下面的命令。 >MySQL-uroot-p6为root用户的密码。 2)创建远程登陆用户并授权>grantallPRIVILEGESondiscuz.*toted@123.123.123.123identifiedby;上面的语句表示将discuz数据库的所有权限授权给ted这个用户,允许ted用户在123.123.123.123这个IP进行远程登陆,并设置ted用户的密码为。 下面逐一分析所有的参数:allPRIVILEGES表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如:select,insert,update,sqlserver/=_blank>delete,create,drop等,具体权限间用“,”半角逗号分隔。 discuz.*表示上面的权限是针对于哪个表的,discuz指的是数据库,后面的*表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。 ted表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。 123.123.123.123表示允许远程连接的IP地址,如果想不限制链接的IP则设置为“%”即可。 为用户的密码。 执行了上面的语句后,再执行下面的语句,方可立即生效。 >flushprivileges;远程登录mysql一些常用的代码段,大家可参考一下。 一、允许root用户在任何地方进行远程登录,并具有所有库任何操作权限,具体操作如下:在本机先使用root用户登录mysql:mysql-uroot-pyoupassword进行授权操作:mysql>GRANTALLPRIVILEGESON*.*TOroot@%IDENTIFIEDBYyoupasswordwithGRANTOPTION;重载授权表:FLUSHPRIVILEGES;退出mysql数据库:exit二、允许root用户在一个特定的IP进行远程登录,并具有所有库任何操作权限,具体操作如下:在本机先使用root用户登录mysql:mysql-uroot-pyoupassword进行授权操作:GRANTALLPRIVILEGESON*.*TOroot@172.16.16.152IDENTIFIEDBYyoupasswordWITHGRANTOPTION;重载授权表:FLUSHPRIVILEGES;退出mysql数据库:exit三、允许root用户在一个特定的IP进行远程登录,并具有所有库特定操作权限,具体操作如下:在本机先使用root用户登录mysql:mysql-uroot-pyoupassword进行授权操作:GRANTselect,insert,update,deleteON*.*TOroot@172.16.16.152IDENTIFIEDBYyoupassword;重载授权表:FLUSHPRIVILEGES;退出mysql数据库:exit四、删除用户授权,需要使用REVOKE命令,具体命令格式为:REVOKEprivilegesON数据库[.表名]FROMuser-name;具体实例,先在本机登录mysql:mysql-uroot-pyoupassword进行授权操作:GRANTselect,insert,update,deleteONTEST-DBTOtest-user@172.16.16.152IDENTIFIEDBYyoupassword;再进行删除授权操作:REVOKEallonTEST-DBfromtest-user;****注:该操作只是清除了用户对于TEST-DB的相关授权权限,但是这个“test-user”这个用户还是存在。 最后从用户表内清除用户:DELETEFROMuserWHEREuser=test-user;重载授权表:FLUSHPRIVILEGES;退出mysql数据库:exit
如何修改mysql用户名和密码
以修改mysql的root密码为例修改的三种方法方法1:用SETPASSWORD命令mysql>SETPASSWORDFORroot@localhost=PASSWORD(newpass);方法2:用mysqladminmysqladmin-urootpasswordnewpass如果root已经设置过密码,采用如下方法mysqladmin-urootpasswordoldpassnewpass方法3:用UPDATE直接编辑user表mysql>usemysql;mysql>UPDATEuserSETPassword=PASSWORD(newpass)WHEREuser=root;mysql>FLUSHPRIVILEGES;
centos 下mysql怎么改密码
做服务器运维,修改 MySQL 的密码是经常的需要,定期修改 MySQL 密码是网站安全的一个保证。 这里记录一下修改 MySQL 密码的一些命令,方便以后查看。 修改root密码CentOS 下 MySQL 管理员帐号默认是 root 用户,密码为空。 如果你从没设置过 MySQL 的密码,使用 root 用户来连接 MySQL 服务器不需要输入密码。 第一次设置root密码可以使用以下命令:mysqladmin -u root password NEWPASSWORD如果你已经设置过密码了,需要要以下命令:mysqladmin -u root -p’oldpassword’ password newpass比如说,旧密码是“”,新密码是“nowamagic”,执行以下命令:mysqladmin -u root -p’′ password ‘nowamagic’修改其它MySQL用户的密码修改一个普通用户的密码你可以使用以下命令,比如用户是 nmuser:mysqladmin -u nmuser -p oldpassword password newpass另一种修改密码的方法是,MySQL 服务器把用户名和密码储存在 MySQL 数据库的 user 表中。 你可以使用以下方法来直接更新用户 nmuser 的密码:1. 登录MySQL服务器:mysql -u root -p2. 选择 MySQL 数据库mysql> use mysql;3. 修改 nmuser 密码mysql> update user set password=PASSWORD(“NEWPASSWORD”) where User=’nmuser’;4. 重置权限mysql> flush privileges;mysql> quit这种方法也可以用脚本(PHP,Perl)执行,不用SSH到服务器。
发表评论