每次在新的服务器上部署 MySQL 都要重新上网各种搜索,有的操作还不适用自己的服务器系统等等问题。故此,准备整理一下 MySQL 入手指南,方便自己与方便他人。
服务器安装MySQL依赖
阿里云在Linux实例中安装MySQL数据库
查看 MySQL 安装情况
查看版本
# mysql -V
# mysql Ver 8.0.35 for Linux on x86_64 (MySQL Community Server - GPL) 出现此信息,表示安装成功
查看安装路径 (Linux)
whereis mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/man/man1/mysql.1.gz
登录用户mysql
# mysql -u username -p
创建新用户
登录 root 用户 进入 mysql> 运行环境
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
'username'
是要创建的用户名,'localhost'
是该用户的主机名,'password'
是该用户的密码。如果要创建的用户已经存在,可以使用IGNORE
关键字来忽略错误:
在这里,'localhost'
表示该用户只能从本地登录,如果您希望用户能够从任何主机远程登录,可以将'localhost'
改为'%'
。
查看所有用户
SELECT user, host FROM mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| test | % |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
权限配置
查看用户权限
- root 用户登录情况
SHOW GRANTS FOR 'username'@'localhost';
+--------------------------------------------------------------+
| Grants for shanping@% |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO `username`@`%` |
| GRANT ALL PRIVILEGES ON `database_name`.* TO `username`@`%` |
+--------------------------------------------------------------+
- 当前用户登录
SHOW GRANTS;
+--------------------------------------------------------------+
| Grants for username@% |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO `username`@`%` |
| GRANT ALL PRIVILEGES ON `database_name`.* TO `username`@`%` |
+--------------------------------------------------------------+
对非Root用户进行授权
- 授权全部权限,一般不建议这么做
有时候运行以下命令会出现 ERROR 1410 (42000): You are not allowed to create a user with GRANT 错误,翻译获利就是 不允许使用GRANT创建用户,这是因为你可能输出了用户的 主机地址,真实的地址是 % 而不是 localhost。最后别玩了 执行 FLUSH PRIVILEGES 命令 刷新权限
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';
FLUSH PRIVILEGES;
- 收回用户的全部权限
REVOKE ALL PRIVILEGES ON *.* FROM 'username'@'localhost';
FLUSH PRIVILEGES;
- 对新用户只授权特定的数据库权限
GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@'localhost';
FLUSH PRIVILEGES;
- 撤销对某个数据库的权限
REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'localhost';
FLUSH PRIVILEGES;