修改密码:
1.
例如你的
root
用户现在没有密码,你希望的密码修改为
123456
,那么命令是:
mysqladmin -u root password 123456
2.
如果你的
root
现在有密码了(
123456
),那么修改密码为
abcdef
的命令是:
mysqladmin -u root -p password abcdef
注意,命令回车后会问你旧密码,输入旧密码
123456
之后命令完成,密码修改成功。
3.
如果你的
root
现在有密码了(
123456
),那么修改密码为
abcdef
的命令是:
mysqladmin -u root -p123456 password abcdef (
注意
-p
不要和后面的密码分
开写,要写在一起
,
不然会出错
,
错误如下所示
)
不过别忘了使用
PASSWORD
函数。
忘记密码:
下面我们提供了
6
种不同的修改
mysql root
用户的密码,与增加
mysql
用户的方法。
方法一:
使用
phpmyadmin
,这是最简单的了,修改
mysql
库的
user
表,
不过别忘了使用
PASSWORD
函数。
方法二:
使用
mysqladmin
,这是前面声明的一个特例。
mysqladmin -u root -p password mypasswd
输入这个命令后,需要输入
root
的原密码,然后
root
的密码将改为
mypasswd
。
把命令里的
root
改为你的用户名,你就可以改你自己的密码了。
当然如果你的
mysqladmin
连接不上
mysql server
,或者你没有办法执行
mysqladmin
,
那么这种方法就是无效的。
而且
mysqladmin
无法把密码清空。
下面的方法都在
mysql
提示符下使用,且必须有
mysql
的
root
权限:
方法三:
mysql> INSERT INTO mysql.user (Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit'));
mysql> FLUSH PRIVILEGES
确切地说这是在增加一个用户,用户名为
jeffrey
,密码为
biscuit
。
在《
mysql
中文参考手册》里有这个例子,所以我也就写出来了。
注意要使用
PASSWORD
函数,然后还要使用
FLUSH PRIVILEGES
。
方法四 :
和方法三一样,只是使用了
REPLACE
语句
mysql> REPLACE INTO mysql.user (Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit'));
mysql> FLUSH PRIVILEGES
方法五:
使用
SET PASSWORD
语句,
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit');
拟也必须使用
PASSWORD()
函数,
但是不需要使用
FLUSH PRIVILEGES
。
方法六:
使用
GRANT ... IDENTIFIED BY
语句
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit';
这里
PASSWORD()
函数是不必要的,也不需要使用
FLUSH PRIVILEGES
。
注意:
PASSWORD() [
不是
]
以在
Unix
口令加密的同样方法施行口令加密。
MySQL
忘记口令的解决办法
如果
MySQL
正在运行,首先杀之:
killall -TERM mysqld
。
启动
MySQL
:
bin/safe_mysqld --skip-grant-tables &
就可以不需要密码就进入
MySQL
了。
然后就是
>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;
重新杀
MySQL
,用正常方法启动
MySQL
。
其它办法:
办法一:
在
linux
下忘记
mysql
的密码,咋整?有一种方法可以很快的重设密码。
首先,关闭
mysql.
这个时候你用
Mysqladmin shutdown
来关闭
mysql
基本是不可能的,为啥,因为你不知到密码了么,用其它用户去连接
mysql
库,会提示你没有权限。
其次,直接用
kill
命令也是不行的。
mysqld_safe
启动以后,如果
mysqld
被
kill
掉,这个进程会自动重启,真是坑爹啊!
那么,只能使出绝招了
killall -TERM mysqld
第二步,到
root
用户下(或者是
mysql
服务的安装用户下)绕开安全权限启动
mysqld
/usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
第三步,修改
Mysql
库中的
user
表,重新赋予新的权限
>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;
注意,这步会把所有
user=root
的账户密码都设为这个,可以在
where
里加入针对性的限定条件
第四步,重新
kill
掉
mysqld
,然后重启,一切
ok
办法二:
1
.首先确认服务器出于安全的状态,也就是没有人能够任意地连接
MySQL
数据库。
因为在重新设置
MySQL
的
root
密码的期间,
MySQL
数据库完全出于没有密码保护的
状态下,其他的用户也可以任意地登录和修改
MySQL
的信息。可以采用将
MySQL
对外的端口封闭,并且停止
Apache
以及所有的用户进程的方法实现服务器的准安全状态。最安全的状态是到服务器的
Console
上面操作,并且拔掉网线。
2
.修改
MySQL
的登录设置:
# vi /etc/my.cnf
在
[mysqld]
的段中加上一句:
skip-grant-tables
例如:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-grant-tables
保存并且退出
vi
。
3
.重新启动
mysqld
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
4
.登录并修改
MySQL
的
root
密码
# /usr/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 3.23.56
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> USE mysql ;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> UPDATE user SET Password = password ( 'new-password' ) WHERE User = 'root' ;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 2 Changed: 0 Warnings: 0
mysql> flush privileges ;
Query OK, 0 rows affected (0.01 sec)
mysql> quit
Bye
5
.将
MySQL
的登录设置修改回来
# vi /etc/my.cnf
将刚才在
[mysqld]
的段中加上的
skip-grant-tables
删除
保存并且退出
vi
。
6
.重新启动
mysqld
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]