Centos 7 开发环境之 MySQL 5.7 的安装及配置(rpm)
最近需要在服务器上安装 MySQL、MongoDB、Redis 和 ELK 等,记录一下过程,防止下次继续踩坑。
一、下载 MySQL 安装包
- 访问 https://dev.mysql.com/downloads/mysql/ ,按如下选择:
- 操作系统:
Red Hat Enterprise Linux / Oracle Linux
- 版本:
Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit)
- 操作系统:
- 选择
RPM Bundle
,点击后边的download
- 在
No thanks, just start my download
上右键复制链接地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar
- SSH 连上服务器,运行命令:
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar
二、卸载 mariadb
趁着下载文件,卸载一下mariadb。之所以把这一部分单独列出来,是因为踩坑了。当时我安装的时候不知道,结果安装的时候一直提示有错误,原来 Centos 7 上默认安装有 mariadb-libs
,需要卸载掉。
- 运行命令,查看
mariadb-libs
:rpm -qa | grep mariadb
- 得到
mariadb-libs
的包名,如:mariadb-libs-5.5.37-1.el7_0.x86_64
,运行命令卸载掉:rpm -e mariadb-libs-5.5.37-1.el7_0.x86_64 --nodeps
三、安装 Mysql
- 解压tar 文件,解压获得12个文件,其中3个
embedded
、2个minimal
和1个test
的可以删除,剩余6个:tar -xvf mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar
- 按照顺序运行下列命令安装即可:
rpm -ivh mysql-community-common-5.7.20-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.20-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.20-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.20-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.20-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.20-1.el7.x86_64.rpm
四、数据库初始化
- 如果是以 root 用户登录,需要
--user
选项,如果是以 mysql 身份运行,则不需要:mysqld --initialize --user=mysql
- initialize会以安全模式初始化数据库,然后创建一个默认密码,并标记为过期,需要登录后修改密码。使用下面命令获取密码
cat /var/log/mysqld.log|grep password
- 修改服务器默认端口号,编辑
/etc/my.cnf
文件,在[mysqld]
下添加一行:port=9000
五、启动数据库
- 运行命令:
service mysqld start
- 事实上 Centos7已经使用
systemctl
命令替换掉了service
命令,所以也可以用下面命令:systemctl start mysqld.service
- 使用
systemctl
命令设置开机启动,取消开机启动用disable
:systemctl enable mysqld.service
六、登录数据库
- 使用命令登录数据库,密码为初始化数据库时获取的密码
mysql -u root -p
- 修改密码:
SET PASSWORD = PASSWORD("123456");
七、创建新用户并赋权
- 默认的用户 root 不能够远程访问,需要创建一个新用户:
GRANT ALL PRIVILEGES ON *.* TO "myuser"@"%" IDENTIFIED BY "mypwd";
- 用户 myuser,密码 mypwd,可以远程访问,有所有数据库所有表的权限,比 root 用户只少了一个 grant 权限。
- 如果不想给用户这么多权限,只需要增删改查等常规操作,去掉上述命令中的
ALL
- 如果不想给用户所有数据库的权限,那么把上述命令的
*.*
修改为mydb.*
,则只附于用户mydb
这个数据库所有的表的权限。