安装环境:
系统: Ubuntu22.04 LTS(64bit)
SQL: MySQL8.0

一、 MySQL安装

1. 更新 apt 索引

sudo apt update

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

sudo apt install mysql-server-8.0
sudo service mysql restart
mysql -u root -p

3. MySQL 命令

apt 安装 MySQL 服务端后默认无密码, 可以直接输入 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. 管理用户

给用户账户创建密码 && 修改密码:

mysql> ALTER USER 'testuser'@'localhost' IDENTIFIED BY 'new-password';

创建远程登陆账户:

mysql> CREATE USER 'testuser'@'%' IDENTIFIED WITH caching_sha2_password BY 'new-password';

在MySQL 8.0 中,默认身份验证插件由 mysql_native_password 更改 为 caching_sha2_password

给 'testuser'@'%' 用户添加所有权限、所有数据库表 (超级管理账号):

mysql> GRANT ALL ON *.* TO 'root'@'%';

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

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

删除用户:

mysql> DROP USER 'testuser'@'localhost';
mysql> DROP USER 'testuser'@'%';

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

3.设置用户操作数据库权限 ( test_db.* 为当前数据库权限, *.*为所有数据库权限)

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

mysql> GRANT ALL ON *.* TO 'testuser'@'%';

设置用户 testuser, 拥有<test_db>数据库的所有操作权限

mysql> GRANT ALL ON test_db.* TO 'testuser'@'%';

设置用户 testuser, 只拥有当前数据库的<查询>操作权限

mysql> GRANT SELECT ON test_db.* TO 'testuser'@'localhost';

设置用户 testuser, 只拥有当前数据库的<查询/插入>操作权限

mysql> GRANT SELECT,INSERT ON test_db.* TO 'testuser'@'localhost';

设置用户 testuser, 拥有指定数据库所有权限操作权限

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON test_db.* TO 'testuser'@'localhost';

4. 撤销用户权限

撤销全局权限:

mysql> REVOKE ALL ON *.* FROM 'finley'@'%';
mysql> REVOKE RELOAD ON *.* FROM 'admin'@'localhost';

撤销数据库级权限:

mysql> REVOKE CREATE,DROP ON test_db.* FROM 'testuser'@'localhost';

撤销表级权限:

mysql> REVOKE INSERT,UPDATE,DELETE ON test_db.test_table FROM 'testuser'@'localhost';

检查特权撤销的效果

mysql> SHOW GRANTS FOR 'testuser'@'localhost';

5. 其他命令

设置所有用户可以远程访问 mysql, 修改配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf, 将 bind-address = 127.0.0.1 这一行注释掉, 其他机器就能远程访问本机 mysql 了

查询 mysql 中所有用户及权限:

mysql> select host,user from user;

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

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

该命令用户修改权限后刷新 MySQL 的系统权限相关表, 否则会出现拒绝访问, 刷新系统权限相关表方可生效, 还有一种方法就是使用 sudo service mysql restart 命令重新启动 mysql 服务器, 来使新设置生效

标签: MySQL, ubuntu

添加新评论