mysql不重启的情况下修改参数变量

mysql不重启的情况下修改参数变量,第1张

通常来说,更新mysql配置my.cnf需要重启mysql才能生效,但是有些时候mysql在线上,不一定允许你重启,这时候应该怎么办呢?

看一个例子:

mysql>

show

variables

like

'log_slave_updates'

+-------------------+-------+

|

Variable_name

|

Value

|

+-------------------+-------+

|

log_slave_updates

|

OFF

|

+-------------------+-------+

row

in

set

(0.00

sec)

mysql>

set

global

log_slave_updates=1

ERROR

1238

(HY000):

Variable

'log_slave_updates'

is

a

read

only

variable

看到了吧?报错了!

后来查了一下资料,发现有一个叫gdb的东西,感觉相当牛X,可以实现在线更改mysql参数,请看例子:

mysql>

system

gdb

-p

$(pidof

mysqld)

-ex

"set

opt_log_slave_updates=1"

-batch

mysql>

show

variables

like

'log_slave_updates'

+-------------------+-------+

|

Variable_name

|

Value

|

+-------------------+-------+

|

log_slave_updates

|

ON

|

+-------------------+-------+

row

in

set

(0.00

sec)

但是在一些可重复的参数,不能直接用set更改,那这时候又要怎么办呢?老外给了一个解决方案:

复制代码

代码如下:

mysql>

show

slave

status

\G

...

Replicate_Do_DB:

test

...

mysql>

system

gdb

-p

$(pidof

mysqld)

-ex

'call

rpl_filter->add_do_db(strdup("hehehe"))'

-batch

mysql>

show

slave

status

\G

...

Replicate_Do_DB:

test,hehehe

...

可以用phpMyAdmin通过输入语句的方法建立用户,或者一般的图形界面的SQL管理程序也可以建立和编辑用户.

这里只说使用GRANT语句的方法,当然还有直接修改MySQL表的方法,不过很麻烦,用的人不多~

前提是有MySQL root权限

例子:建立另一个超级用户(所有权限)的方法

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

localhost是主机名,也可以是IP,用于限定这个用户是否可以远程连接.还可以用通配符"%",比如%.im286.com,或者202.97.224.%

*.* 中第一个星星是数据库名(*为所有数据库),第二个星星是表名(*为前面数据库下的所有表)

ALL 是指全部语句的 *** 作权限(经常看到虚拟主机等的用户没有DROP权限,就是这里做了手脚)

语法大概就是这样吧.

理论上来讲,更改配置之后都需要重启服务的,也就是说,你没必要重启数据库,但是mysql服务必须得重启;

重启方法: cmd下键入:net stop mysql 回车

net start mysql 回车,即完成了重启mysql的服务,修改的配置文件,也随之生效。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7387716.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存