MySQL账户相关


1.mysql消费者 缔造:
shell> mysql --user=root mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'something' WITH GRANT OPTION;

mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%" IDENTIFIED BY 'something' WITH GRANT OPTION;

mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;

mysql> GRANT USAGE ON *.* TO dummy@localhost;

这些GRANT语句安装3个新消费者:

monty

可以从任何地方衔接服务器的一个 彻底的超级消费者,然而必须 使用一个口令'something'做这个 。 留神,我们必须对monty@localhost和monty@"%"发出GRANT语句 。假如我们添加localhost条目,对localhost的匿名消费者条目在我们从当地主机衔接接时由mysql_install_db 缔造的条目将优先考量,由于它有更特定的Host字段值,所以以user表罗列顺序看更早到来 。

admin

可以从localhost没有一个口令进行衔接而且被授予reload和process治理权限的消费者 。这同意消费者执行mysqladmin reload、mysqladmin refresh和mysqladmin flush-*命令,还有mysqladmin processlist 。没有授予数据库有关的权限 。他们能在以后通过发出另一个GRANT语句授权 。
dummy

可以不用一个口令衔接的一个消费者,然而不得不从当地主机 。全局权限被设置为'N'--USAGE权限类型同意你无需权限就可设置一个消费者 。它 假如你将在以后授予数据库 有关的权限 。

2.通过直接 批改授权表设置消费者权限,运行这些命令( 留神,在 完毕时FLUSH PRIVILEGES):

shell> mysql --user=root mysql

mysql> INSERT INTO user (Host,User,Password) VALUES('localhost','custom',PASSWORD('stupid'));


mysql> INSERT INTO user (Host,User,Password) VALUES('server.domain','custom',PASSWORD('stupid'));


mysql> INSERT INTO user (Host,User,Password) VALUES('whitehouse.gov','custom',PASSWORD('stupid'));


mysql> INSERT INTO db     (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,  Create_priv,Drop_priv)

    VALUES  ('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y');

mysql> INSERT INTO db

    (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv, Create_priv,Drop_priv)

    VALUES ('whitehouse.gov','expenses','custom','Y','Y','Y','Y','Y','Y');

mysql> INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv, Create_priv,Drop_priv)

    VALUES('%','customer','custom','Y','Y','Y','Y','Y','Y');

mysql> FLUSH PRIVILEGES;

3. 改变密码时有时候会遇到 淡忘先前的密码,这时 可以采纳以下 模式:

批改你的my.ini 配置文件,

在里面的 [mysqld]节中某处加入下面的一行

skip-grant-tables

而后 保留,重启 mysqld 服务,这样你 可以 使用任何消费者名以超级治理员的身体登录 MySQL 服务了 。

而后转到mysql数据库中 批改user表:

update user set password=PASSword('1234') where user='root';

定然记住要用password函数,不然 将来将要输入的密码是‘1234’的密文 。

最终删除上面所添中的内容,重启服务 。

另外,假如 可以从本机或其它机器上找到 可以 畸形 使用的MySql数据库,那么也可拷贝其mysql库中的文件名为user的 有关文件, 遮蔽 淡忘密码的数据库中的同名文件,这样也能以被拷贝者的账户密码登录 。

4.如何设置MySql账户使其 可以从远程 拜访服务器


在5.0版本中,其实有一个图形界面的配置向导工具,在设置root账户密码时, 可以 取舍是不是同意其从远程 拜访 。默许状况下是不同意的 。

在命令行下, 可以有两种大同小异的 步骤来作此设置:

(1)mysql>GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'something' WITH GRANT OPTION;

mysql>GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY 'something' WITH GRANT OPTION;

第一句添加了一个root消费者授权通过当地机(localhost) 拜访,密码“something” 。

第二句则是 使用通配符,授与root消费者从任何其它主机 发动的 拜访 。

(2)亦可直接 使用update语句 批改user表: 使用root消费者或 其余消费者登录mysql,转到mysql数据库

update user set host='localhost' where user='root';

flush privileges;//只同意root在本机登录

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

flush privileges;//同意root远程 拜访

留神,以上 定然要加flush语句 。

另外,假如要建新消费者,则用grant语句 比较容易,记住语句grant总是 缔造新消费者 。

5.对于MySql的3306端口

一次在服务器上新装5.0.18时, 揭示3306端口已被占用,强制 使用该端口,则发现所衔接上的数据库是4.1.8版本,始终 无奈 拜访到新 缔造的服务器 。后来发现机器上原来装有一个mysql服务器,4.1.8版本 。

此时,应再一次配置新版本的数据库, 将端口设为 其余的,如3307,那么在 拜访时, 可以通过外加选项:--port=3307来 拜访,在.net程序中也须将衔接字符串添上port=3307,即可 。