切换用户,2.MySQL账户管理

作者: 编程  发布:2019-11-02

Bug描述

今天周末,在家里学点新技术,虽然公司分配的任务没有完成(滑稽滑稽)

 

我先创建了一个mysql数据库,用root用户创建一个新用户,毕竟项目中使用root是非常危险的,尤其是我这样的实习生(再次滑稽)。然后愉快的给它赋予了权限,切换用户

然而,不愉快的事情发生了:

ERROR 1045 (28000): Access denied for user 'xxx'@'localhost' (using password: YES)

  密码错了? 

    算了,再敲一遍

      fuck,还是错了

        可能设密码的时候手抖了

          那我就重设下密码吧

            update user set password=password('密码') where user='用户名' ; 

              然后,看到 0 行被更新???

  然后怀着怀疑人生的态度搜了很久,前一页的博客都是一样的,唉~

  一通乱操作之后还是没有x用,都是说改密码,还有扯php的。。。

MySQL的安全机制:

1、  mysql安装(此处实例mysql版本为5.6版本)

# 解决过程

  后来无意中进入stackoverflower,然后一看提问,发现碰到的情况和我一模一样:

1.MySQL登录

  a) 下载mysql的repo源

## 提问

图片 1

mysql -u账户 -p密码 -h127.0.0.1 -P端口 数据库名

    $ wget

## 回答

图片 2

 

大意就是你有一个用户名为空的账户,mysql会先匹配它,然后就一直提示你密码错误,删掉这个匿名用户,然后执行 FLUSH PRIVILEGES;

 

Delete FROM user Where User='' and Host='localhost';

flush privileges;

 

mysql -h hostname|hostIP -p port -u username -p password databaseName -e "SQL语句";

  b) 安装mysql-community-release-el7-5.noarch.rpm包

# 总结        

 

    然后就可以愉快的登陆成功,开始光荣的增删改查之旅了

 

    图片 3

 

  

退出:

    $ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

exitquit;

    安装这个包后,会获得两个mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo。

2.MySQL账户管理

  c) 安装mysql

创建用户:

    $ sudo yum install mysql-server

create user 'username'@'hostname' identified by 'password';

    根据提示安装就可以了,不过安装完成后没有密码,需要重置密码

grant 权限(增删改查) on database_name to 'username'@'hostname(一般是localhost)' identified by "密码";

  d)  重置mysql密码

修改密码(当前登录用户的密码):

    $ mysql -u root

(1).不登陆的时候更改密码

    登录时有可能报这样的错:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2),原因是/var/lib/mysql的访问权限问题。下面的命令把/var/lib/mysql的拥有者改为当前用户:

mysqladmin -uroot -p旧密码 password 新密码(最后不要加分号)

  e)  $ sudo chown -R root:root /var/lib/mysql

(2).登陆数据库后,对指定应用进行密码修改

    重启mysql服务

方法一: use mysql;

    $ service mysqld restart

update user set password=PASSWORD('新密码') where user = 'root';(修改完成之后要重启mysql服务(net start|stop mysql));

  f)  接下来登录重置密码:

flush privileges;// 刷新权限

          $ mysql -u root  //直接回车进入mysql控制台

方法二: set password = password('new password');

          mysql > use mysql;

flush privileges;

          mysql >set password=password('123456') where user='root';或者更改 update user set password=password('123456') where user='root';

方法三. set password for 'username'@'hostname'=password("new password");(超级用户(root)下)

             mysql > exit;

方法四(在忘记root密码,登陆不进去的情况下)

 

先停止服务

修改mysql数据库密码的4种方法

net stop mysql

方法1: 用SET PASSWORD命令
首先登录MySQL。
格式:mysql> set password for 用户名@localhost = password('新密码');
例子:mysql> set password for root@localhost = password('123');

mysqld --defaults-file="你电脑的mysql的ini文件的路径" --console --skip-grant-tables

方法2:用mysqladmin
格式:mysqladmin -u用户名 -p旧密码 password 新密码
例子:mysqladmin -uroot -p123456 password 123

如果不知道路径,可以在服务中找到Mysql,右击属性,属性中有个可执行文件可以找见。

方法3:用UPDATE直接编辑user表
首先登录MySQL。
mysql> use mysql;
mysql> update user set password=password('123') where user='root' and host='localhost';
mysql> flush privileges;

ps: 这命令可以跳过权限安全检查

方法4:在忘记root密码的时候,可以这样
以windows为例:

然后再打开第二个黑窗口

  1. 关闭正在运行的MySQL服务。
  2. 打开DOS窗口,转到mysqlbin目录。
  3. 输入mysqld --skip-grant-tables 回车。--skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。
    4. 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysqlbin目录。
  4. 输入mysql回车,如果成功,将出现MySQL提示符 >。
  5. 连接权限数据库: use mysql; 。
  6. 改密码:update user set password=password("123") where user="root";(别忘了最后加分号) 。
  7. 刷新权限(必须步骤):flush privileges; 。
  8. 退出 quit。
  9. 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。 

直接登陆:mysql -uroot -p

 

提示enter password --直接回车连接成功

mysql用户操作

方法五:还可以通过创建账户的语句来修改密码:

一、创建用户

grant 权限(增删改查) on database_name to 'username'@'hostname(一般是localhost)' identified by "密码";

命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 

 

备注:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.

删除用户:

二、授权

drop user 'username'@'hostname';

命令:GRANT privileges ON databasename.tablename TO 'username'@'host'

3.MySQL权限管理

备注: privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所的权限则使用ALL.;databasename - 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*. *    username代表你创建的用户名 host代表哪个主机

在创建用户时赋给用户的权限.

三、设置与更改用户密码

 

命令:SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');如果是当前登陆用户用SET PASSWORD = PASSWORD("newpassword");

例子: SET PASSWORD FOR 'test'@'%' = PASSWORD("123456"); 

四.撤销用户权限
命令: REVOKE privilege ON databasename.tablename FROM 'username'@'host';

说明: privilege, databasename, tablename - 同授权部分.

例子: REVOKE SELECT ON *.* FROM 'pig'@'%';

注意: 假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'pig'@'%', 则在使用REVOKE SELECT ON *.* FROM 'pig'@'%';命令并不能撤销该用户对test数据库中user表的SELECT 操作.相反,如果授权使用的是GRANT SELECT ON *.* TO 'pig'@'%';则REVOKE SELECT ON test.user FROM 'pig'@'%';命令也不能撤销该用户对test数据库中user表的Select 权限. 

五.删除用户
命令: DROP USER 'username'@'host'; 

ALTER Allows use of ALTER TABLE.
ALTER ROUTINE Alters or drops stored routines.
CREATE Allows use of CREATE TABLE.
CREATE ROUTINE Creates stored routines.
CREATE TEMPORARY TABLE Allows use of CREATE TEMPORARY TABLE.
CREATE USER Allows use of CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES.
CREATE VIEW Allows use of CREATE VIEW.
DELETE Allows use of DELETE.
DROP Allows use of DROP TABLE.
EXECUTE Allows the user to run stored routines.
FILE Allows use of SELECT... INTO OUTFILE and LOAD DATA INFILE.
INDEX Allows use of CREATE INDEX and DROP INDEX.
INSERT Allows use of INSERT.
LOCK TABLES Allows use of LOCK TABLES on tables for which the user also has SELECT privileges.
PROCESS Allows use of SHOW FULL PROCESSLIST.
RELOAD Allows use of FLUSH.
REPLICATION Allows the user to ask where slave or master
CLIENT servers are.
REPLICATION SLAVE Needed for replication slaves.
SELECT Allows use of SELECT.
SHOW DATABASES Allows use of SHOW DATABASES.
SHOW VIEW Allows use of SHOW CREATE VIEW.
SHUTDOWN Allows use of mysqladmin shutdown.
SUPER Allows use of CHANGE MASTER, KILL, PURGE MASTER LOGS, and SET GLOBAL SQL statements. Allows mysqladmin debug command. Allows one extra connection to be made if maximum connections are reached.
UPDATE Allows use of UPDATE.
USAGE Allows connection without any specific privileges.

本文由9159.com发布于编程,转载请注明出处:切换用户,2.MySQL账户管理

关键词:

上一篇:没有了
下一篇:没有了