MySQL常用权限操作
** ubuntu mysql 8.0.21修改root密码 **
1、查看默认安装密码:
sudo cat /etc/mysql/debian.cnf
2、 登录mysql
mysql -u debian-sys-maint -p
3、更新密码并刷新权限
mysql> use mysql; mysql> flush privileges; mysql> ALTER USER \'root\'@\'localhost\' IDENTIFIED WITH mysql> mysql_native_password BY \'你的密码\'; mysql> flush privileges;
5.7版本操作
添加用户:
// 允许指定ip连接 CREATE USER \'username\'@\'host\' IDENTIFIED BY \'password\'; create user \'新用户名\'@\'localhost\' identified by \'密码\'; // 不限制 IP(用通配符%表示) create user \'新用户名\'@\'%\' identified by \'密码\'; CREATE USER \'javacui\'@\'localhost\' IDENTIFIED BY \'123456\'; CREATE USER \'javacui\'@\'172.20.0.0/255.255.0.0\' IDENDIFIED BY \'123456\'; CREATE USER \'javacui\'@\'%\' IDENTIFIED BY \'123456\'; CREATE USER \'javacui\'@\'%\' IDENTIFIED BY \'\'; CREATE USER \'javacui\'@\'%\';
授权
// 基本格式如下 grant all privileges on 数据库名.表名 to \'新用户名\'@\'指定ip\' identified by \'新用户密码\' ;// 允许访问所有数据库下的所有表 grant all privileges on *.* to \'新用户名\'@\'指定ip\' identified by \'新用户密码\' ; // 指定数据库下的指定表 grant all privileges on test.test to \'新用户名\'@\'指定ip\' identified by \'新用户密码\' ;
注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令
GRANT privileges ON databasename.tablename TO \'username\'@\'host\' WITH GRANT OPTION;
设置用户操作权限
// 设置用户拥有所有权限也就是管理员 grant all privileges on *.* to \'新用户名\'@\'指定ip\' identified by \'新用户密码\' WITH GRANT OPTION; // 查询权限 grant select on *.* to \'新用户名\'@\'指定ip\' identified by \'新用户密码\' WITH GRANT OPTION; // 设置用户拥有查询插入的权限 (其它操作权限说明,select查询 insert插入 delete删除 update修改)
grant select,insert on *.* to \'新用户名\'@\'指定ip\' identified by \'新用户密码\' WITH GRANT OPTION;
// 去掉查询权限
REVOKE select ON what FROM \'新用户名\';
之前版本:
注:除了新建用户INSERT 和更新密码其他命令可以用(因为 user 表的 password 字段变成 authentication_string)
常用:更新密码
(SQL命令控制台执行)
UPDATE user SET PASSWORD=PASSWORD(\'123456\') WHERE USER=\'ROOT\' AND HOST=\'%\';
或者(SQL命令控制台执行)
SET PASSWORD FOR root@localhost= PASSWORD(\'123456\');
当前用户简单
SET PASSWORD = PASSWORD("newpassword");
或者(下面这个shell中执行,输入原密码和新密码)
mysqladmin -u root -p old_password password new_password
常用:赋予权限
GRANT ALL PRIVILEGES ON *.* TO \'root\' @\'%\' IDENTIFIED BY \'123456\' WITH GRANT OPTION;
注:\'root\' @\'%\',root为你要修改的SQL用户名,%为ip,%表示权限开发所有IP都可访问,如果有具体的IP,改成IP地址即可。
** 修改完密码后记得刷新权限 **
FLUSH PRIVILEGES;
1.新建用户
mysql -u root -p
Enter password:
输入密码登录。
创建用户:
mysql> INSERT INTO mysql.user(Host, User, Password) VALUES ("localhost", "test", PASSWORD("123456"))
这样就创建了一个名为:test 密码为:123456的用户。
注意:此 localhost 指该用户只能在本地登录,不能远程登录。如果想远程登录的话,将 localhost 改为 %,表示不限制 ip。也可指定 某机器 / ip 可以远程登录。
然后登录试试:
mysql> exit; $ mysql -u test -p Enter password:
2. 为用户授权
授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
(1) 登录MYSQL(有ROOT权限),这里以ROOT身份登录:
mysql -u root -p
(2) 首先为用户创建一个数据库(testDB):
mysql>CREATE DATABASE test_db;
(3) 授权test用户拥有testDB数据库的所有权限(某个数据库的所有权限):
mysql> GRANT ALL PRIVILEGES ON test_db.* TO test@localhost IDENTIFIED BY \'123456\'; mysql> FLUSH PRIVILEGES; //刷新权限
(4) 如果想指定部分权限给一用户,可以这样来写:
mysql> GRANT SELECT,UPDATE ON test_db.* to test@localhost IDENTIFIED BY \'123456\'; mysql> FLUSH PRIVILEGES; //刷新权限
(5) 授权test用户拥有所有数据库的某些权限:
mysql> GRANT SELECT,DELETE,UPDATE,CREATE,DROP ON *.* to test@"%" identified by "123456";
3. 删除用户
mysql> DELETE FROM user WHERE User = \'test\' AND Host = \'localhost\'; mysql> FLUSH PRIVILEGES; mysql> DROP DATABASE test_db; //删除用户的数据库
最后删除账户及权限:
mysql> DROP USER 用户名@\'%\'; mysql> DROP USER 用户名@localhost;