Ubuntu安装及配置MySQL8.0
安装环境:
系统: 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 服务器, 来使新设置生效