安装环境
OS: Ubuntu18.04 LTS(64bit)
安装: MySQL5.7

一、MySQL安装
1.更新 apt-get 索引

sudo apt-get update

2.安装数据库,在安装过程中,会自动卸载已经安装的老版本数据

sudo apt-get install mysql-server  //安装数据库
sudo service mysql restart         //安装完成后重启数据库
mysql -u root -p                   //使用指定用户并使用密码登录

安装 MySQL 服务端后默认无密码,没有密码时可以直接输入 mysql 命令进入数据库

3.MySQL 命令

#进入MySQL:  mysql 或者 mysql -u root -p
#启     动:  sudo service mysql start
#重     启:  sudo service mysql restart 
#关     闭:  sudo service mysql stop

二、用户权限配置
1.数据库配置文件修改

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

可更改端口,添加tls等

2.创建或修改用户
通过 root 用户登录之后创建

mysql>> grant all privileges on *.* to testuser@localhost identified by"123456";

该创建新用户,用户名为 testuser ( testuser 替换为已存在用户名时可修改该用户数据)
密码为 123456

mysql>> grant all privileges on *.* to testuser@"%" identified by"123456";

设置用户 testuser ,可以在远程访问 mysql

mysql>> grant all privileges on *.* to testuser@"192.168.1.2" identified by "123456";

设置用户 testuser,只能在客户端 IP 为 192.168.1.2 上才能远程访问mysql

*localhost 表示只可以在本地访问;
*设置为 "%" 表示开启该用户的远程访问权限;
*设置为指定IP时,使该用户仅能通过该 IP 访问 mysql。

mysql>> flush privileges;

mysql 新设置用户或更改密码后需用 flush privileges 刷新 MySQL 的系统权限相关表,否则会出现拒绝访问,还有一种方法,就是重新启动 mysql 服务器,来使新设置生效

3.设置用户访问数据库权限

mysql>> grant all privileges on test_db.* to testuser@localhost identified by "123456";

设置用户 testuser,只能访问数据库 test_db ,其他数据库均不能访问

mysql>> grant all privileges on *.* to testuser@localhost identified by "123456";

设置用户 testuser,可以访问 mysql 上的所有数据库

mysql>> grant all privileges on test_db.user_info to testuser@localhost identified by "123456";

设置用户 testuser,只能访问数据库 test_db 的表 user_info ,数据库中的其他表均不能访问

4.设置用户操作数据库权限

mysql>> grant all privileges on *.* to testuser@localhost identified by "123456" WITH GRANT OPTION;

设置用户 testuser,拥有<所有的>操作权限,也就是管理员

mysql>> grant all privileges on *.* to testuser@localhost identified by "123456" require ssl;

创建仅能使用ssl加密登录的用户

mysql>> grant select on *.* to testuser@localhost identified by "123456" WITH GRANT OPTION;

设置用户 testuser,只拥有<查询>操作权限

mysql>> grant select,insert on *.* to testuser@localhost identified by "123456";

设置用户 testuser,只拥有<查询/插入>操作权限

mysql>> grant select,insert,update,delete on *.* to testuser@localhost identified by "123456";

设置用户 testuser,只拥有<查询/插入/修改/删除>操作权限

5.root 用户的访问设置( root 用户基本操作同上)

设置所有用户可以远程访问 mysql,修改 my.cnf 配置文件,将 bind-address = 127.0.0.1 前面加 “#” 注释掉,这样就可以允许其他机器远程访问本机 mysql 了

mysql>> select host,user from user;

查询 mysql 中所有用户的权限

mysql>> grant all privileges on *.* to root@"%" identified by "123456";

设置用户 root,可以在远程访问 mysql

mysql>> delete from user where user="root" and host="%";

禁止 root 用户在远程机器上访问 mysql

mysql>> flush privileges;

修改权限之后,刷新 MySQL 的系统权限相关表方可生效