MySQL账号密码修改后远程访问不生效的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sunny05296/article/details/94131483

在命令行通过mysqladmin修改MySQL账号密码后,远程访问不生效,远程访问仍然还是只能通过旧密码访问。

问题原因:通过mysqladmin修改MySQL账号密码时,默认修改的是本地登录密码,授权远程访问的密码是单独的,可以通过mysql.user表查看。因此,还需要再修改远程访问密码。

我的root仅允许本地访问,frank允许远程(host='%')访问,修改密码流程参考如下:

Step1 首先通过mysqladmin修改用户本地登录密码
[root@abc ~]# mysqladmin  -uroot -poldPassword password newPassword
[root@abc ~]# mysqladmin  -ufrank -poldPassword password newPassword

Step2 使用root本地用户登录修改数据库user表的远程(host='%')登录密码(password)
# mysql -uroot -pnewPassword
MariaDB [mysql]> use mysql;
MariaDB [mysql]> select user, host, password from user;
+---------+-----------------------+-------------------------------------------+
| user    | host                  | password                                  |
+---------+-----------------------+-------------------------------------------+
| root    | localhost             |                                           |
| root    | localhost.localdomain | *11A53AA45F506D040FA26F3D7AB3161EF439E2D9 |
| root    | 127.0.0.1             | *11A53AA45F506D040FA26F3D7AB3161EF439E2D9 |
| root    | ::1                   | *11A53AA45F506D040FA26F3D7AB3161EF439E2D9 |
| frank   | %                     | *E6BBD6D11034EBDB604031F965F333E95DE86C15 |
| frank   | localhost             |                                           |
| frank01 | localhost             | *712B69033BB2C08B8E1243774687F3DE968DBBF4 |
+---------+-----------------------+-------------------------------------------+
7 rows in set (0.00 sec)

MariaDB [mysql]> 
MariaDB [mysql]> update user set password=PASSWORD('newPassword') where user='frank' and host='%';

Step3 使修改立即生效
MariaDB [mysql]> flush privileges; --或重启数据库

展开阅读全文

Oracle Package 修改生效问题

08-27

[color=#FF0000][b]问题:[/b][/color]rnOracle Package 在修改后没有生效......rnrn[color=#FF0000][b]现象:[/b][/color]rn[i]创建测试包[/i]rnrncreate or replace package PACK_TEST isrn v_global varchar2(1000):='nnnnnnn';rn rn procedure get_values (v_values out varchar2);rn procedure set_values (v_values11 in varchar2);rn procedure set_values (v_values11 in number);rnrnend PACK_TEST;rn/rnrncreate or replace package body PACK_TEST isrn procedure get_values (rn v_values out varchar2rn )rn asrn rn beginrn v_values:=v_global;rn rn end;rn rn procedure set_values (rn v_values11 in varchar2rn )rn asrn rn beginrn v_global:=v_values11;rn exceptionrn when others thenrn dbms_output.put_line(sqlcode||':'||sqlerrm);rn end;rn rn procedure set_values (rn v_values11 in numberrn )rn asrn rn beginrn v_global:=v_values11;rn exceptionrn when others thenrn dbms_output.put_line(sqlcode||':'||sqlerrm);rn end;rnend PACK_TEST;rn/rnrn[i]创建测试调用过程:[/i]rnrnCREATE OR REPLACE PROCEDURE "PROC_ICE" (rn v_A IN VARCHAR2,rn v_B IN NUMBER,rn v_E IN date,rn v_C OUT NUMBER,rn v_D OUT VARCHAR2rn)rnASrnBEGINrn v_c:=0;rn pack_test.set_values('kkkkkkkk');rn pack_test.get_values(v_d);rn rnexceptionrnwhen others thenrnnull;rnEND;rn/rnrn[color=#FF0000][b]在PL/SQL Developer中调用PROC_ICE会打印出v_C=0; v_D=kkkkkkkk; 但修改包后,任意修改,rn比如修改 v_global varchar2(1000):='uuuuu';rn在PLSQL中(不要重新连接,使用前面已经连接上的SESSION),再次调用PROC_ICE会打印出v_C=0; v_D=; v_D是没有值的,说明过程调用包没有生效,重新连接后是正常的.rnrn在应用中用VC做ODBC连接也是同样的问题, 连接后调用是正常的,但修改包后出现的问题同PL/SQL Developer; rn先前以为是ODBC的问题, 所以改用OCI驱动连接, 结果是一样的问题.rnrn但在用SQLPLUS测试的时候是没有问题的,修改包后是立即生效, 打印正常.rnrn个人检查:rn包是在第一次调用时将整个包放入内存,我也检查过SHARED_POOL,查看过v$db_object_cache; 使用过dbms_shared_pool包将包重新放入内存,但在PL/SQL Developer和VC中的结果是相同的,问题没有解决.rnrn请教高手这个问题是什么原因??[/b][/color] 论坛

没有更多推荐了,返回首页