由于经常使用 Linux 系统, 并且大数据环境搭建中经常会使用到 MySQL, 不像 Windows 系统下的安装, 今天有点空写一篇, 下面我给大家演示一遍.
主要有三部分内容:
1,MySQL 的卸载
2,MySQL 的安装
3,MySQL 用户的授权和用户创建, 删除
一, MySQL 的卸载 (如果是仅仅安装 MySQL 的用户可以跳过这一部分)
a) 查看系统中以 rpm 包安装的 MySQL:
- [hadoop@master ~]$ rpm -qa | grep -i MySQL
- MySQL-client-5.5.59-1.el7.x86_64
- MySQL-server-5.5.59-1.el7.x86_64
b) 卸载 MySQL
- [hadoop@master ~]$ sudo rpm -e MySQL-client-5.5.59-1.el7.x86_64
- [hadoop@master ~]$ sudo rpm -e MySQL-server-5.5.59-1.el7.x86_64
现在可以使用 rpm -qa | grep -i MySQL 来查看系统是否还有 rpm 安装的 MySQL 包
c) 关闭 MySQL 服务
[hadoop@master ~]$ systemctl stop MySQL
d) 删除分散 MySQL 文件夹
whereis MySQL 和 sudo find / -name MySQL
当然每个人的情况都不一样, 但删除的方式是一样的,, 哈哈哈 可以使用 rm -rf 删除上面查找的 MySQL 文件夹
清空相关 MySQL 的所有目录以及文件, 可以使用我的方式删除
- sudo rm -rf /var/lib/MySQL /usr/lib64/MySQL /var/lib/MySQL/MySQL /usr/lib64/MySQL
- sudo rm -rf /usr/lib/MySQL /usr/share/MySQL /usr/my.cnf
通过以上几步, MySQL 应该已经完全卸载干净了
二, MySQL 的安装
a) 下载 MySQL rpm 安装包
- MySQL-server-5.5.59-1.el7.x86_64.rpm
- MySQL-client-5.5.59-1.el7.x86_64.rpm
b) 安装 libaio 需要 libaio 的依赖
sudo yum install libaio
c)rpm 安装
- sudo rpm -ivh MySQL-server-5.5.59-1.el7.x86_64.rpm
- sudo rpm -ivh MySQL-client-5.5.59-1.el7.x86_64.rpm
d) 运行和配置 MySQL
systemctl start MySQL 启动 MySQL 服务
安装完 MySQL-server 会提示可以运行 mysql_secure_installation. 运行 mysql_secure_installation 会执行几个设置:
a) 为 root 用户设置密码
b) 删除匿名账号
c) 取消 root 用户远程登录
d) 删除 test 库和对 test 库的访问权限
e) 刷新授权表使修改生效
通过这几项的设置能够提高 MySQL 库的安全. 建议生产环境中 MySQL 安装这完成后一定要运行一次 mysql_secure_installation, 详细步骤请参看下面的命令:
代码如下:
- [root@server1 ~]# mysql_secure_installation
- NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
- SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
- In order to log into MySQL to secure it, we'll need the current
- password for the root user. If you've just installed MySQL, and
- you haven't set the root password yet, the password will be blank,
- so you should just press enter here.
Enter current password for root (enter for none):<- 初次运行直接回车
- OK, successfully used password, moving on...
- Setting the root password ensures that nobody can log into the MySQL
- root user without the proper authorisation.
Set root password? [Y/n] <- 是否设置 root 用户密码, 输入 y 并回车或直接回车
New password: <- 设置 root 用户的密码
Re-enter new password: <- 再输入一次你设置的密码
- Password updated successfully!
- Reloading privilege tables..
- ... Success!
- By default, a MySQL installation has an anonymous user, allowing anyone
- to log into MySQL without having to have a user account created for
- them. This is intended only for testing, and to make the installation
- go a bit smoother. You should remove them before moving into a
- production environment.
Remove anonymous users? [Y/n] <- 是否删除匿名用户, 生产环境建议删除, 所以直接回车
- ... Success!
- Normally, root should only be allowed to connect from 'localhost'. This
- ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] <- 是否禁止 root 远程登录, 根据自己的需求选择 Y/n 并回车, 建议禁止
- ... Success!
- By default, MySQL comes with a database named 'test' that anyone can
- access. This is also intended only for testing, and should be removed
- before moving into a production environment.
Remove test database and access to it? [Y/n] <- 是否删除 test 数据库, 直接回车
- - Dropping test database...
- ... Success!
- - Removing privileges on test database...
- ... Success!
- Reloading the privilege tables will ensure that all changes made so far
- will take effect immediately.
Reload privilege tables now? [Y/n] <- 是否重新加载权限表, 直接回车
- ... Success!
- Cleaning up...
- All done! If you've completed all of the above steps, your MySQL
- installation should now be secure.
- Thanks for using MySQL!
e) 启动 MySQL
MySQL -uroot -p
三, MySQL 用户的授权和用户创建, 删除
默认情况下制定在本地使用 root 的账号密码进行连接, 远程连接不了, 需要配置权限
- #(执行下面的语句 *.*: 所有库下的所有表 %: 任何 IP 地址或主机都可以连接)
- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
- FLUSH PRIVILEGES; // 刷新权限
此刻, 就可以在其他地方远程连接 MySQL 数据库了. 由于我们经常会创建一个新用户来使用数据库
1) 查看所有用户的权限列表
MySQL> show grants;
2) 查看指定用户的权限信息
- MySQL> show grants for 'root'@'localhost';
- MySQL> show grants for 'root'@'%';
3) 创建新用户 (需要在 root 的方式登陆下创建)
命令:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
说明:
username: 你将创建的用户名
host: 指定该用户在哪个主机上可以登陆, 如果是本地用户可用 localhost, 如果想让该用户可以从任意远程主机登陆, 可以使用通配符 %
password: 该用户的登陆密码, 密码可以为空, 如果为空则该用户可以不需要密码登陆服务器
例子:
- CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
- CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
- CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
- CREATE USER 'pig'@'%' IDENTIFIED BY '';
- CREATE USER 'pig'@'%';
4) 授权 (需要在 root 的方式登陆下创建)
命令:
GRANT privileges ON databasename.tablename TO 'username'@'host'
说明:
privileges: 用户的操作权限, 如 SELECT,INSERT,UPDATE 等, 如果要授予所的权限则使用 ALL
databasename: 数据库名
tablename: 表名, 如果要授予该用户对所有数据库和表的相应操作权限则可用 * 表示, 如 *.*
例子:
- GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
- GRANT ALL ON *.* TO 'pig'@'%';
- GRANT ALL ON maindataplus.* TO 'pig'@'%';
注意:
用以上命令授权的用户不能给其它用户授权, 如果想让该用户可以授权, 用以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
5) 设置与更改用户密码
命令:
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
如果是当前登陆用户用:
SET PASSWORD = PASSWORD("newpassword");
例子:
SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");
6) 撤销用户权限
命令:
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
说明:
privilege, databasename, tablename: 同授权部分
例子:
REVOKE SELECT ON *.* FROM 'pig'@'%';
注意:
假如你在给用户'pig'@'%'授权的时候是这样的 (或类似的):GRANT SELECT ON test.user TO 'pig'@'%', 则在使用 REVOKE SELECT ON *.* FROM 'pig'@'%'; 命令并不能撤销该用户对 test 数据库中 user 表的 SELECT 操作. 相反, 如果授权使用的是 GRANT SELECT ON *.* TO 'pig'@'%'; 则 REVOKE SELECT ON test.user FROM 'pig'@'%'; 命令也不能撤销该用户对 test 数据库中 user 表的 Select 权限.
具体信息可以用命令 SHOW GRANTS FOR 'pig'@'%'; 查看.
7) 删除用户
命令:
DROP USER 'username'@'host';
权限参考: https://www.cnblogs.com/sos-blue/p/6852945.html
来源: https://www.cnblogs.com/ya-qiang/p/10142868.html