首页 > 编程知识 正文

浅析mysql数据库授权原则(mysql可以授权的权限包括)

时间:2023-12-09 14:12:24 阅读:313439 作者:CFAC

本文目录一览:

  • 1、如何让mysql数据库允许被远程连接访问
  • 2、MySQL的权限有哪些
  • 3、mysql中怎样设置用户和管理员的权限?
  • 4、MySQL 中的内存授权表的作用是什么
  • 5、windows和Linux下的mysql授权表设置攻略

如何让mysql数据库允许被远程连接访问

第一:更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称'%'。

或者新加条记录,“host” 项为要访问的ip地址,并授权。重启mysql服务。

第二:在系统防火墙添加例外端口:3306,并允许例外。

错误提示:

ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server

的解决方法:

1。改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"

1.mysql -u root -pvmware

mysqluse mysql;

mysqlupdate user set host = '%' where user = 'root';

mysqlselect host, user from user;

2. 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

3.在window自带的防火墙里的例外添加3306端口

总结:

mysql -u root -p

mysqluse mysql;

mysqlselect 'host' from user where user='root';

mysqlupdate user set host = '%' where user ='root';

mysqlflush privileges;

mysqlselect 'host' from user where user='root';

第一句是以权限用户root登录

第二句:选择mysql库

第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)

第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址

第五句:刷新MySQL的系统权限相关表

第六句:再重新查看user表时,有修改。。

重起mysql服务即可完成。

MySQL的权限有哪些

MySQL的权限有哪些

一.权限表

mysql数据库中的3个权限表:user 、db、 host

权限表的存取过程是:

1)先从user表中的host、 user、 password这3个字段中判断连接的IP、用户名、密码是否存在表中,存在则通过身份验证;

2)通过权限验证,进行权限分配时,按照useràdbàtables_privàcolumns_priv的顺序进行分配。即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db, tables_priv,columns_priv;如果为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限;如果db中为N,则检查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推。

二.MySQL各种权限(共27个)

(以下操作都是以root身份登陆进行grant授权,以p1@localhost身份登陆执行各种命令。)

1. usage

连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)。

mysql grant usage on *.* to ‘p1′@’localhost’ identified by ‘123′;

该权限只能用于数据库登陆,不能执行任何操作;且usage权限不能被回收,也即REVOKE用户并不能删除用户。

2. select

必须有select的权限,才可以使用select table

mysql grant select on pyt.* to ‘p1′@’localhost’;

mysql select * from shop;

3. create

必须有create的权限,才可以使用create table

mysql grant create on pyt.* to ‘p1′@’localhost’;

4. create routine

必须具有create routine的权限,才可以使用{create |alter|drop} {procedure|function}

mysql grant create routine on pyt.* to ‘p1′@’localhost’;

当授予create routine时,自动授予EXECUTE, ALTER ROUTINE权限给它的创建者:

mysql show grants for ‘p1′@’localhost’;

+—————————————————————————+

Grants for p1@localhost

+————————————————————————–+

| GRANT USAGE ON *.* TO ‘p1′@’localhost’ IDENTIFIED BY PASSWORD ‘*23AE809DDACAF96AF0FD78ED04B6A265E05AA257′ |

| GRANT SELECT, CREATE, CREATE ROUTINE ON `pyt`.* TO ‘p1′@’localhost’|

| GRANT EXECUTE, ALTER ROUTINE ON PROCEDURE `pyt`.`pro_shop1` TO ‘p1′@’localhost’ |

+————————————————————————————-+

5. create temporary tables(注意这里是tables,不是table)

必须有create temporary tables的权限,才可以使用create temporary tables.

mysql grant create temporary tables on pyt.* to ‘p1′@’localhost’;

[mysql@mydev ~]$ mysql -h localhost -u p1 -p pyt

mysql create temporary table tt1(id int);

6. create view

必须有create view的权限,才可以使用create view

mysql grant create view on pyt.* to ‘p1′@’localhost’;

mysql create view v_shop as select price from shop;

7. create user

要使用CREATE USER,必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。

mysql grant create user on *.* to ‘p1′@’localhost’;

或:mysql grant insert on *.* to p1@localhost;

8. insert

必须有insert的权限,才可以使用insert into ….. values….

9. alter

必须有alter的权限,才可以使用alter table

alter table shop modify dealer char(15);

10. alter routine

必须具有alter routine的权限,才可以使用{alter |drop} {procedure|function}

mysqlgrant alter routine on pyt.* to ‘p1′@’ localhost ‘;

mysql drop procedure pro_shop;

Query OK, 0 rows affected (0.00 sec)

mysql revoke alter routine on pyt.* from ‘p1′@’localhost’;

[mysql@mydev ~]$ mysql -h localhost -u p1 -p pyt

mysql drop procedure pro_shop;

ERROR 1370 (42000): alter routine command denied to user ‘p1′@’localhost’ for routine ‘pyt.pro_shop’

11. update

必须有update的权限,才可以使用update table

mysql update shop set price=3.5 where article=0001 and dealer=’A';

12. delete

必须有delete的权限,才可以使用delete from ….where….(删除表中的记录)

13. drop

必须有drop的权限,才可以使用drop database db_name; drop table tab_name;

drop view vi_name; drop index in_name;

14. show database

通过show database只能看到你拥有的某些权限的数据库,除非你拥有全局SHOW DATABASES权限。

对于p1@localhost用户来说,没有对mysql数据库的权限,所以以此身份登陆查询时,无法看到mysql数据库:

mysql show databases;

+——————–+

| Database |

+——————–+

| information_schema|

| pyt |

| test |

+——————–+

15. show view

必须拥有show view权限,才能执行show create view。

mysql grant show view on pyt.* to p1@localhost;

mysql show create view v_shop;

16. index

必须拥有index权限,才能执行[create |drop] index

mysql grant index on pyt.* to p1@localhost;

mysql create index ix_shop on shop(article);

mysql drop index ix_shop on shop;

17. excute

执行存在的Functions,Procedures

mysql call pro_shop1(0001,@a);

+———+

| article |

+———+

| 0001 |

| 0001 |

+———+

mysql select @a;

+——+

| @a |

+——+

| 2 |

+——+

18. lock tables

必须拥有lock tables权限,才可以使用lock tables

mysql grant lock tables on pyt.* to p1@localhost;

mysql lock tables a1 read;

mysql unlock tables;

19. references

有了REFERENCES权限,用户就可以将其它表的一个字段作为某一个表的外键约束。

20. reload

必须拥有reload权限,才可以执行flush [tables | logs | privileges]

mysql grant reload on pyt.* to p1@localhost;

ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES

mysql grant reload on *.* to ‘p1′@’localhost’;

Query OK, 0 rows affected (0.00 sec)

mysql flush tables;

21. replication client

拥有此权限可以查询master server、slave server状态。

mysql show master status;

ERROR 1227 (42000): Access denied; you need the SUPER,REPLICATION CLIENT privilege for this operation

mysql grant Replication client on *.* to p1@localhost;

或:mysql grant super on *.* to p1@localhost;

mysql show master status;

+——————+———-+————–+——————+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+——————+———-+————–+——————+

| mysql-bin.000006 | 2111 | | |

+——————+———-+————–+——————+

mysql show slave status;

22. replication slave

拥有此权限可以查看从服务器,从主服务器读取二进制日志。

mysql show slave hosts;

ERROR 1227 (42000): Access denied; you need the REPLICATION SLAVE privilege for this operation

mysql show binlog events;

ERROR 1227 (42000): Access denied; you need the REPLICATION SLAVE privilege for this operation

mysql grant replication slave on *.* to p1@localhost;

mysql show slave hosts;

Empty set (0.00 sec)

mysqlshow binlog events;

+—————+——-+—————-+———–+————-+————–+

| Log_name | Pos | Event_type | Server_id| End_log_pos|Info | +—————+——-+————–+———–+————-+—————+

| mysql-bin.000005 | 4 | Format_desc | 1 | 98 | Server ver: 5.0.77-log, Binlog ver: 4 | |mysql-bin.000005|98|Query|1|197|use `mysql`; create table a1(i int)engine=myisam|

……………………………………

23. Shutdown

关闭MySQL:

[mysql@mydev ~]$ mysqladmin shutdown

重新连接:

[mysql@mydev ~]$ mysql

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)

[mysql@mydev ~]$ cd /u01/mysql/bin

[mysql@mydev bin]$ ./mysqld_safe

[mysql@mydev bin]$ mysql

24. grant option

拥有grant option,就可以将自己拥有的权限授予其他用户(仅限于自己已经拥有的权限)

mysql grant Grant option on pyt.* to p1@localhost;

mysql grant select on pyt.* to p2@localhost;

25. file

拥有file权限才可以执行 select ..into outfile和load data infile…操作,但是不要把file, process, super权限授予管理员以外的账号,这样存在严重的安全隐患。

mysql grant file on *.* to p1@localhost;

mysql load data infile ‘/home/mysql/pet.txt’ into table pet;

26. super

这个权限允许用户终止任何查询;修改全局变量的SET语句;使用CHANGE MASTER,PURGE MASTER LOGS。

mysql grant super on *.* to p1@localhost;

mysql purge master logs before ‘mysql-bin.000006′;

27. process

通过这个权限,用户可以执行SHOW PROCESSLIST和KILL命令。默认情况下,每个用户都可以执行SHOW PROCESSLIST命令,但是只能查询本用户的进程。

mysql show processlist;

+—-+——+———–+——+———+——+——-+——————+

| Id | User | Host | db | Command | Time | State | Info |

+—-+——+———–+——+———+——+——-+——————+

| 12 | p1 | localhost | pyt | Query | 0 | NULL | show processlist |

+—-+——+———–+——+———+——+——-+——————+

另外,

管理权限(如 super, process, file等)不能够指定某个数据库,on后面必须跟*.*

mysql grant super on pyt.* to p1@localhost;

ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES

mysql grant super on *.* to p1@localhost;

Query OK, 0 rows affected (0.01 sec)

mysql中怎样设置用户和管理员的权限?

MySQL管理员应该知道如何设置MySQL用户账号,指出哪个用户可以连接服务器,从哪里连接,连接后能做什么。MySQL 3.22.11开始引入两条语句使得这项工作更容易做:GRANT语句创建MySQL用户并指定其权限,而REVOKE语句删除权限。两条语句扮演了MySQL数据库的前端角色,并提供与直接操作这些表的内容不同的另一种方法。CREATE和REVOKE语句影响4个表: 中.国站长站

还有第5个授权表(host),但它不受GRANT和REVOKE的影响。 中.国.站长站

当你对一个用户发出一条GRANT语句时,在user表中为该用户创建一条记录。如果语句指定任何全局权限(管理权限或适用于所有数据库的权限),这些也记录在user表中。如果你指定数据库、表和列级权限,他们被分别记录在db、tables_priv和columns_priv表中。

站.长站

用GRANT和REVOKE比直接修改授权表更容易些,然而,建议你阅读一下《MySQL安全性指南》。这些表异常重要,而且作为一名管理员,你应该理解它们如何超越GRANT和REVOKE语句的功能水平。

站.长站

在下面的章节中,我们将介绍如何设置MySQL用户账号并授权。我们也涉及如何撤权和从授权表中删除用户。 Chinaz

你可能也想考虑使用MySQLACCESS和mysql_setpermission脚本,它是MySQL分发的一部分,它们是Perl脚本,提供GRANT语句的另一种选择设置用户账号。MySQL_setpermission需要安装DBI支持。

Chinaz.com

1、创建用户并授权 Chinaz.com

GRANT语句的语法看上去像这样:

以下为引用的内容:

GRANT privileges (columns)

ON what

TO user IDENTIFIED BY "password"

WITH GRANT OPTION

要使用该语句,你需要填写下列部分:

中国.站.长站

privileges 站长.站

授予用户的权限,下表列出可用于GRANT语句的权限指定符:

中国站.长.站

上表显示在第一组的权限指定符适用于数据库、表和列,第二组数管理权限。一般,这些被相对严格地授权,因为它们允许用户影响服务器的操作。第三组权限特殊,ALL意味着“所有权限”,UASGE意味着无权限,即创建用户,但不授予权限。 Www^Chinaz^com

columns

中国.站长站

权限运用的列,它是可选的,并且你只能设置列特定的权限。如果命令有多于一个列,应该用逗号分开它们。

中国站长.站

what

站长.站

权限运用的级别。权限可以是全局的(适用于所有数据库和所有表)、特定数据库(适用于一个数据库中的所有表)或特定表的。可以通过指定一个columns字句是权限是列特定的。 Www@Chinaz@com

user 中国站长_站,为中文网站提供动力

权限授予的用户,它由一个用户名和主机名组成。在MySQL中,你不仅指定谁能连接,还有从哪里连接。这允许你让两个同名用户从不同地方连接。MySQL让你区分他们,并彼此独立地赋予权限。

中国.站长站

MySQL中的一个用户名就是你连接服务器时指定的用户名,该名字不必与你的Unix登录名或Windows名联系起来。缺省地,如果你不明确指定一个名字,客户程序将使用你的登录名作为MySQL用户名。这只是一个约定。你可以在授权表中将该名字改为nobody,然后以nobody连接执行需要超级用户权限的操作。

[中国站长站]

password Www_Chinaz_com

赋予用户的口令,它是可选的。如果你对新用户没有指定IDENTIFIED BY子句,该用户不赋给口令(不安全)。对现有用户,任何你指定的口令将代替老口令。如果你不指定口令,老口令保持不变,当你用IDENTIFIED BY时,口令字符串用改用口令的字面含义,GRANT将为你编码口令,不要象你用SET PASSWORD 那样使用password()函数。 中国站长_站,为中文网站提供动力

WITH GRANT OPTION子句是可选的。如果你包含它,用户可以授予权限通过GRANT语句授权给其它用户。你可以用该子句给与其它用户授权的能力。 [中国站长站]

用户名、口令、数据库和表名在授权表记录中是大小写敏感的,主机名和列名不是。 Www~Chinaz~com

一般地,你可以通过询问几个简单的问题来识别GRANT语句的种类:

中国.站长站

谁能连接,从那儿连接?

Chinaz.com

用户应该有什么级别的权限,他们适用于什么?

中国站长_站,为中文网站提供动力

用户应该允许管理权限吗? 中国站长.站

下面就讨论一些例子。 站.长站

1.1 谁能连接,从那儿连接?

Chinaz@com

你可以允许一个用户从特定的或一系列主机连接。有一个极端,如果你知道降职从一个主机连接,你可以将权限局限于单个主机:

GRANT ALL ON samp_db.* TO boris@localhost IDENTIFIED BY "ruby"

中国站.长.站

GRANT ALL ON samp_db.* TO fred@res.mars.com IDENTIFIED BY "quartz" 中国站长.站

(samp_db.*意思是“samp_db数据库的所有表)另一个极端是,你可能有一个经常旅行并需要能从世界各地的主机连接的用户max。在这种情况下,你可以允许他无论从哪里连接:

中国站长.站

GRANT ALL ON samp_db.* TO max@% IDENTIFIED BY "diamond" 站.长站

“%”字符起通配符作用,与LIKE模式匹配的含义相同。在上述语句中,它意味着“任何主机”。所以max和max@%等价。这是建立用户最简单的方法,但也是最不安全的。 Www@Chinaz@com

取其中,你可以允许一个用户从一个受限的主机集合访问。例如,要允许mary从snake.net域的任何主机连接,用一个%.snake.net主机指定符:

[中国站长站]

GRANT ALL ON samp_db.* TO mary@.snake.net IDENTIFIED BY "quartz";

中国站长_站,为中文网站提供动力

如果你喜欢,用户标识符的主机部分可以用IP地址而不是一个主机名来给定。你可以指定一个IP地址或一个包含模式字符的地址,而且,从MySQL 3.23,你还可以指定具有指出用于网络号的位数的网络掩码的IP号: Chinaz~com

GRANT ALL ON samp_db.* TO boris@192.168.128.3 IDENTIFIED BY "ruby"

中国站长.站

GRANT ALL ON samp_db.* TO fred@192.168.128.% IDENTIFIED BY "quartz" Chinaz@com

GRANT ALL ON samp_db.* TO rex@192.168.128.0/17 IDENTIFIED BY "ruby" [中国站长站]

第一个例子指出用户能从其连接的特定主机,第二个指定对于C类子网192.168.128的IP模式,而第三条语句中,192.168.128.0/17指定一个17位网络号并匹配具有192.168.128头17位的IP地址。 中国.站.长站

如果MySQL抱怨你指定的用户值,你可能需要使用引号(只将用户名和主机名部分分开加引号)。 Chinaz^com

GRANT ALL ON samp_db.president TO "my friend"@"boa.snake.net"

1.2 用户应该有什么级别的权限和它们应该适用于什么? 站.长站

你可以授权不同级别的权限,全局权限是最强大的,因为它们适用于任何数据库。要使ethel成为可做任何事情的超级用户,包括能授权给其它用户,发出下列语句: 中.国.站长站

GRANT ALL ON *.* TO ethel@localhost IDENTIFIED BY "coffee" WITH GRANT OPTION Chinaz~com

ON子句中的*.*意味着“所有数据库、所有表”。从安全考虑,我们指定ethel只能从本地连接。限制一个超级用户可以连接的主机通常是明智的,因为它限制了试图破解口令的主机。

Www~Chinaz~com

有些权限(FILE、PROCESS、RELOAD和SHUTDOWN)是管理权限并且只能用"ON *.*"全局权限指定符授权。如果你愿意,你可以授权这些权限,而不授权数据库权限。例如,下列语句设置一个flush用户,他只能发出flush语句。这可能在你需要执行诸如清空日志等的管理脚本中会有用: 站.长站

GRANT RELOAD ON *.* TO flushl@localhost IDENTIFIED BY "flushpass" 中国站.长.站

一般地,你想授权管理权限,吝啬点,因为拥有它们的用户可以影响你的服务器的操作。 Www~Chinaz~com

数据库级权限适用于一个特定数据库中的所有表,它们可通过使用ON db_name.*子句授予: Chinaz^com

GRANT ALL ON samp_db TO bill@racer.snake.net INDETIFIED BY "rock" Chinaz@com

GRANT SELECT ON samp_db TO ro_user@% INDETIFIED BY "rock"

中国.站.长站

第一条语句向bill授权samp_db数据库中所有表的权限,第二条创建一个严格限制访问的用户ro_user(只读用户),只能访问samp_db数据库中的所有表,但只有读取,即用户只能发出SELECT语句。

你可以列出一系列同时授予的各个权限。例如,如果你想让用户能读取并能修改现有数据库的内容,但不能创建新表或删除表,如下授予这些权限: Www@Chinaz@com

GRANT SELECT,INSERT,DELETE,UPDATE ON samp_db TO bill@snake.net INDETIFIED BY "rock"

中国.站.长站

对于更精致的访问控制,你可以在各个表上授权,或甚至在表的每个列上。当你想向用户隐藏一个表的部分时,或你想让一个用户只能修改特定的列时,列特定权限非常有用。如:

GRANT SELECT ON samp_db.member TO bill@localhost INDETIFIED BY "rock"

中.国.站.长.站

GRANT UPDATE (expiration) ON samp_db. member TO bill@localhost 中国站长_站,为中文网站提供动力

第一条语句授予对整个member表的读权限并设置了一个口令,第二条语句增加了UPDATE权限,当只对expiration列。没必要再指定口令,因为第一条语句已经指定了。

Www^Chinaz^com

如果你想对多个列授予权限,指定一个用逗号分开的列表。例如,对assistant用户增加member表的地址字段的UPDATE权限,使用如下语句,新权限将加到用户已有的权限中:

[中国站长站]

GRANT UPDATE (street,city,state,zip) ON samp_db TO assistant@localhost

中国.站.长站

通常,你不想授予任何比用户确实需要的权限宽的权限。然而,当你想让用户能创建一个临时表以保存中间结果,但你又不想让他们在一个包含他们不应修改内容的数据库中这样做时,发生了要授予在一个数据库上的相对宽松的权限。你可以通过建立一个分开的数据库(如tmp)并授予开数据库上的所有权限来进行。例如,如果你想让来自mars.net域中主机的任何用户使用tmp数据库,你可以发出这样的GRANT语句:

中.国站长站

GRANT ALL ON tmp.* TO ""@mars.net

Chinaz^com

在你做完之后,用户可以创建并用tmp.tbl_name形式引用tmp中的表(在用户指定符中的""创建一个匿名用户,任何用户均匹配空白用户名)。 中.国站长站

1.3 用户应该被允许管理权限吗?

中.国.站.长.站

你可以允许一个数据库的拥有者通过授予数据库上的所有拥有者权限来控制数据库的访问,在授权时,指定WITH GRANT OPTION。例如:如果你想让alicia能从big.corp.com域的任何主机连接并具有sales数据库中所有表的管理员权限,你可以用如下GRANT语句:

[中国站长站]

GRANT ALL ON sales.* TO alicia@%.big.corp.com INDETIFIED BY "applejuice" WITH GRANT OPTION 中国站.长.站

在效果上WITH GRANT OPTION子句允许你把访问授权的权利授予另一个用户。要注意,拥有GRANT权限的两个用户可以彼此授权。如果你只给予了第一个用户SELECT权限,而另一个用户有GRANT加上SELECT权限,那么第二个用户可以是第一个用户更“强大”。 中国站长_站,为中文网站提供动力

2 撤权并删除用户

Chinaz_com

要取消一个用户的权限,使用REVOKE语句。REVOKE的语法非常类似于GRANT语句,除了TO用FROM取代并且没有INDETIFED BY和WITH GRANT OPTION子句: 中国站.长站

REVOKE privileges (columns) ON what FROM user 中国.站.长站

user部分必须匹配原来GRANT语句的你想撤权的用户的user部分。privileges部分不需匹配,你可以用GRANT语句授权,然后用REVOKE语句只撤销部分权限。

中.国站长站

REVOKE语句只删除权限,而不删除用户。即使你撤销了所有权限,在user表中的用户记录依然保留,这意味着用户仍然可以连接服务器。要完全删除一个用户,你必须用一条DELETE语句明确从user表中删除用户记录:

中国站.长.站

%mysql -u root MySQL

MySQLDELETE FROM user

-WHERE User="user_name" and Host="host_name";

MySQLFLUSH PRIVILEGES; 中.国站长站

DELETE语句删除用户记录,而FLUSH语句告诉服务器重载授权表。(当你使用GRANT和REVOKE语句时,表自动重载,而你直接修改授权表时不是。 [中国站长站]

MySQL 中的内存授权表的作用是什么

作用是内存的大小可通过My.cnf中的max_heap_table_size指定。

MySQL的授权系统是通过MySQL数据库中的五个表来实现的,这些表有user、db、host、tables_priv和columns_priv。这些表的用途各有不同,但是有一点是一致的,那就是都能够检验用户要做的事情是否为被允许的。

扩展资料

mysql数据库表包含的授权信息

1、user:用户帐户,全局权限和其他非特权列

2、db:数据库级权限

3、tables_priv:表级特权

4、columns_priv:列级权限

5、procs_priv:存储过程和功能特权

6、proxies_priv:代理用户权限

windows和Linux下的mysql授权表设置攻略

在Windows中,当mysql安装完成之后不需要创建数据目录和授权表。在数据目录下的MySQL数据库中存在一套预初始化的'账户的授权表。不要运行Unix中使用的mysql_install_db脚本。

在Unix上安装MySQL后,需要初始化授权表、启动服务器,并确保服务器工作正常。并为授权表中的账户指定密码。

在Unix中,由mysql_install_db设置授权表。

如果系统为安装好的CentOS5,则只需要运行

# mysql_install_db --user=mysql --datadir=/var/lib/mysql_ndbd/

一定要确保由mysql登录账户拥有数据库目录和文件,以便在以后运行服务器具有读、写访问权限。

当然,也可以以

mysqld_safe --user=mysql --skip-grant-tables 跳过授权表来登录,登录进去重新赋权限,同时更新权限表:flush privileges

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。