2. MySQL 用户管理

使用mysql命令登录数据库

mysql -h localhost -uroot -p
  • -h 主机名
  • -u 用户名
  • -p 密码 ,密码和-p之间不能有空格
  • -P(大写) 端口号,不指定时默认为3306
  • -e 执行的SQL语句

新建普通用户

两种方式,一是使用create user或grant语句,另一种是直接操作mysql授权表
CREATE USER user_speification [,user_specification]...
    user_specification:
    user@host
    [
        IDENTIFIED BY [PASSWORD] 'password'
        |IDENTIFIED WITH auth_plugin [AS 'auth_string']
    ]

例:

CREATE USER ‘jeffrey’@'localhost' IDENTIFIED BY 'mypass'

为了避免指定明文密码,如果知道密码的散列值 ,可以通过PASSWORD关键字使用密码的哈希设置密码 密码的哈希值可以使用password() 函数获取: 如:

select password('mypass');

使用GRANT语句创建新用户,同时也可以赋权限

    GRANT privileges ON db.table
    TO user@host [IDENTIFIED BY ‘password’][,user[INDENTIFIED BY 'password']]
    [WITH GRANT OPTION]

例:

MySQL>GRANT SELECT,UPDATE ON *.* TO 'testUser@localhost'
     >IDENTIFIED BY 'testpwd'

执行成功后,验证testUser的权限

MySQL>SELECT Host,User,Select_priv,Update_priv FROM mysql.user where user='testUser'

User表中的user和host字段区分大小写,在查询的时候要指定正确的用户名 或主机名

删除普通用户

使用DROP USER删除用户

DROP USER user[,user]

例:

DROP USERuser@localhost

root用户修改自已的密码

mysqladmin -u username -h localhost -p password "newpwd"

使用SET语句修改root用户的密码(普通用户也可以修改自已的密码)

SET PASSWORD=PASSWORD("rootpwd")

root用户修改普通用户密码

SET PASSWORD FOR 'user'@'host'=PASSWORD('somepassword')

root用户密码丢失解决办法

使用 --skip-grant-tables选项启动MySQL服务

windows操作系统中,使用mysqld或mysqld-nt来启动MySQL服务进程

mysqld命令如下:

mysqld --skip-grant-tables

myslqd-nt命令如下:

mysqld-nt  --skip-grant-tables

Linux操作系统中,使用mysqld_safe来启动MySQL服务, 也可以使用/etc/init.d/mysql命令来启动MySQL服务。

mysqld_safe 命令如下

mysqld_safe --skip-grant-tables user=mysql

/etc/init.d/mysql命令如下

/etc/init.d/mysql start-mysqld --skip-grant-tables

启动MySQL服务后,就可以使用root用户登录了。

修改密码后,要刷新权限 ,新密码才会生效

mysql>FLUSH PRIVILEGES;

配置远程连接

默认情况下,mysql只允许本地登录,如果要开启远程连接,则需要修改/etc/mysql/my.conf文件。

一、修改/etc/mysql/my.conf

找到bind-address = 127.0.0.1这一行 改为bind-address = 0.0.0.0即可

二、为需要远程登录的用户赋予权限

  1. 新建用户远程连接mysql数据库
grant all on *.* to admin@'%' identified by '123456' with grant option; 
flush privileges;

允许任何ip地址(%表示允许任何ip地址)的电脑用admin帐户和密码(123456)来访问这个mysql server。 注意admin账户不一定要存在。

  1. 支持root用户允许远程连接mysql数据库
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;

三、查看系统用户

use mysql;

select user, host from user;