MySQL密码修改

设置及修改MySQL用户密码

  安装mysql数据库后,默认管理员为root,密码为空,可以直接登陆。

C:\Users\lenovo>mysql -u root -p
Enter password:
# 直接回车登陆

针对mysql数据库的用户管理:

1.增加system并提升为超级管理员,即和root等价的用户,只是名字不同。

grant all privileges on *.*  to 'system'@'localhost' identified by '123456' with grant option;

 2.删除所有mysql中的用户,包括root超级用户。

delete from mysql.user where user != 'system';

修改管理员root用户设置密码

1.命令行修改

[root@localhost ~]# mysqladmin -u root -p"123456" password "123" -S /tmp/mysql_3306.sock 
# ps:此处密码用双引号,用单引号和不用会报错

2.sql语句修改

# 登陆到数据库里面
[root@localhost ~]# mysql -uroot -p123 -S /tmp/mysql_3306.sock 
# 修改mysql.user用户表中对应密码
mysql> update mysql.user set password=PASSWORD("123456") where user='root';
# 修改密码时需要用到PASSWORD函数
# 刷新权限
mysql> flush privileges;
# 用修改后的密码登陆测试
[root@localhost ~]# mysql -uroot -p123456 -S /tmp/mysql_3306.sock 

 ps:适合密码丢失后通过 --skip-grant-tables 参数启动数据库后修改密码。

3.mysql安装完毕后,root默认口令为空,修改root口令。

mysql> set password=PASSWORD("123");
Query OK, 0 rows affected (0.00 sec)

找回丢失的mysqlroot用户密码

1  停止mysql。

2  使用--skip-grant-tables启动MySQL,忽略授权登陆验证。

多实例:mysqld_safe --defaults-flie=/etc/my.cnf --skip-grant-table &

进入:mysql -uroot -p -S /tmp/mysql.sock

# 停止mysql
[root@localhost ~]# killall mysqld
# 忽略授权
[root@localhost ~]# mysqld_safe --skip-grant-tables --user=mysql &
# 直接输入mysql进入 mysql -uroot -p 
[root@localhost ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.22 MySQL Community Server (GPL)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
# 用上面的方法修改密码

创建mysql用户及赋予用户权限

1  查看帮助

mysql> help grant
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost';
GRANT USAGE ON *.* TO 'jeffrey'@'localhost' WITH MAX_QUERIES_PER_HOUR 90;

2 说明

3  操作,创建user01用户,对test库具备所有权限,允许从localhost主机登陆管理,密码123456

mysql> grant all privileges on test.* to 'user01'@'localhost' identified by "123456";
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
[root@localhost ~]# mysql -uuser01 -p123456 -S /tmp/mysql_3306.sock 

4  查看权限

mysql> show grants for user01@localhost;
+---------------------------------------------------------------------------------------------------------------+
| Grants for user01@localhost                                                                                   |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user01'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT ALL PRIVILEGES ON `test`.* TO 'user01'@'localhost'                                                      |
+---------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

5  使用create和grant组合(使用帮助查看help create) 

mysql> create user user02@localhost identified by "123456";
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for user02@localhost;
+---------------------------------------------------------------------------------------------------------------+
| Grants for user02@localhost                                                                                   |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user02'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
+---------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> grant all on test.* to 'user02'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for user02@localhost;
+---------------------------------------------------------------------------------------------------------------+
| Grants for user02@localhost                                                                                   |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user02'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT ALL PRIVILEGES ON `test`.* TO 'user02'@'localhost'                                                      |
+---------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> 

 6  授权远程连接

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 

flush privileges;

 7  查看所有权限

-- 先查看到有所有权限的用户
mysql> show grants for user01@localhost;
+---------------------------------------------------------------------------------------------------------------+
| Grants for user01@localhost                                                                                   |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user01'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT ALL PRIVILEGES ON `test`.* TO 'user01'@'localhost'                                                      |
+---------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> 
-- 收回插入权限
mysql> revoke insert on test.* from 'user01'@'localhost';
Query OK, 0 rows affected (0.00 sec)
-- 下面就可以看到除insert的所有权限
mysql> show grants for user01@localhost;
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for user01@localhost                                                                                                                                                                                                    |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user01'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'                                                                                                                  |
| GRANT SELECT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `test`.* TO 'user01'@'localhost' |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> 

 

posted @ 2018-12-03 17:41  wangzihong  阅读(297)  评论(0编辑  收藏  举报