【MySQL学习】在RHEL7.3上使用yum安装MySQL5.7
一、环境
[root@rhel:~]#cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.3 (Maipo) [root@rhel:~]#uname -r 3.10.0-514.el7.x86_64 [root@rhel:~]#getenforce Disabled
二、官方源
获取官方源:
[root@rhel:/opt]#wget http://repo.mysql.com/mysql57-community-release-el7-9.noarch.rpm --2018-03-15 15:25:41-- http://repo.mysql.com/mysql57-community-release-el7-9.noarch.rpm Resolving repo.mysql.com (repo.mysql.com)... 23.55.208.125 Connecting to repo.mysql.com (repo.mysql.com)|23.55.208.125|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 9224 (9.0K) [application/x-redhat-package-manager] Saving to: ‘mysql57-community-release-el7-9.noarch.rpm’ 100%[================================>] 9,224 1.80KB/s in 5.0s 2018-03-15 15:25:47 (1.80 KB/s) - ‘mysql57-community-release-el7-9.noarch.rpm’ saved [9224/9224]
安装:
[root@rhel:/opt]#rpm -ivh mysql57-community-release-el7-9.noarch.rpm warning: mysql57-community-release-el7-9.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:mysql57-community-release-el7-9 ################################# [100%]
安装之后, /etc/yum.repos.d/目录下会产生两个文件:mysql-community-source.repo、mysql-community.repo。
三、创建组和用户
[root@rhel:~]#groupadd mysql [root@rhel:~]#useradd -r -g mysql -p root mysql [root@rhel:~]#usermod -s /sbin/nologin mysql
四、安装MySQL
由于RHEL7.3中默认安装了Mariadb,安装MySQL时会报错,所以先卸载Mariadb。
[root@rhel:~]#rpm -qa|grep mariadb mariadb-libs-5.5.52-1.el7.x86_64 mariadb-5.5.52-1.el7.x86_64 mariadb-server-5.5.52-1.el7.x86_64
卸载:
[root@rhel:~]#rpm -e mariadb-libs-5.5.52-1.el7.x86_64 error: Failed dependencies: libmysqlclient.so.18()(64bit) is needed by (installed) perl-DBD-MySQL-4.023-5.el7.x86_64 libmysqlclient.so.18()(64bit) is needed by (installed) qt-mysql-1:4.8.5-13.el7.x86_64 libmysqlclient.so.18()(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64 libmysqlclient.so.18()(64bit) is needed by (installed) zabbix-server-mysql-4.0.0-1.1alpha4.el7.x86_64 libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) perl-DBD-MySQL-4.023-5.el7.x86_64 libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) qt-mysql-1:4.8.5-13.el7.x86_64 libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64 libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) zabbix-server-mysql-4.0.0-1.1alpha4.el7.x86_64 mariadb-libs(x86-64) = 1:5.5.52-1.el7 is needed by (installed) mariadb-1:5.5.52-1.el7.x86_64 mariadb-libs(x86-64) = 1:5.5.52-1.el7 is needed by (installed) mariadb-server-1:5.5.52-1.el7.x86_64
使用--nodeps强制卸载:
[root@rhel:~]#rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64 [root@rhel:~]#rpm -e --nodeps mariadb-5.5.52-1.el7.x86_64 [root@rhel:~]#rpm -e --nodeps mariadb-server-5.5.52-1.el7.x86_64
安装MySQL:
[root@rhel:~]#yum install mysql-server Loaded plugins: aliases, changelog, langpacks, ovl, product-id, search- : disabled-repos, subscription-manager, tmprepo, verify, : versionlock This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. file:///mnt/cdrom/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /mnt/cdrom/repodata/repomd.xml" Trying other mirror. mysql-connectors-community | 2.5 kB 00:00 mysql-tools-community | 2.5 kB 00:00 mysql57-community | 2.5 kB 00:00 zabbix | 2.9 kB 00:00 zabbix-non-supported | 951 B 00:00 Resolving Dependencies --> Running transaction check ---> Package mysql-community-server.x86_64 0:5.7.21-1.el7 will be installed --> Processing Dependency: mysql-community-common(x86-64) = 5.7.21-1.el7 for package: mysql-community-server-5.7.21-1.el7.x86_64 --> Processing Dependency: mysql-community-client(x86-64) >= 5.7.9 for package: mysql-community-server-5.7.21-1.el7.x86_64 --> Running transaction check ---> Package mysql-community-client.x86_64 0:5.7.21-1.el7 will be installed --> Processing Dependency: mysql-community-libs(x86-64) >= 5.7.9 for package: mysql-community-client-5.7.21-1.el7.x86_64 ---> Package mysql-community-common.x86_64 0:5.7.21-1.el7 will be installed --> Running transaction check ---> Package mysql-community-libs.x86_64 0:5.7.21-1.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================== Package Arch Version Repository Size ========================================================================== Installing: mysql-community-server x86_64 5.7.21-1.el7 mysql57-community 164 M Installing for dependencies: mysql-community-client x86_64 5.7.21-1.el7 mysql57-community 24 M mysql-community-common x86_64 5.7.21-1.el7 mysql57-community 272 k mysql-community-libs x86_64 5.7.21-1.el7 mysql57-community 2.1 M Transaction Summary ========================================================================== Install 1 Package (+3 Dependent packages) Total size: 190 M Total download size: 188 M Installed size: 858 M Is this ok [y/d/N]: y Downloading packages: No Presto metadata available for mysql57-community warning: /var/cache/yum/x86_64/7Server/mysql57-community/packages/mysql-community-client-5.7.21-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY Public key for mysql-community-client-5.7.21-1.el7.x86_64.rpm is not installed (1/2): mysql-community-client-5.7.21-1.el7.x86_64.rp | 24 MB 00:05 (2/2): mysql-community-server-5.7.21-1.el7.x86_64.rp | 164 MB 02:02 -------------------------------------------------------------------------- Total 1.5 MB/s | 188 MB 02:02 Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql Importing GPG key 0x5072E1F5: Userid : "MySQL Release Engineering <mysql-build@oss.oracle.com>" Fingerprint: a4a9 4068 76fc bd3c 4567 70c8 8c71 8d3b 5072 e1f5 Package : mysql57-community-release-el7-9.noarch (installed) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql Is this ok [y/N]: y Running transaction check Running transaction test Transaction test succeeded Running transaction Warning: RPMDB altered outside of yum. ** Found 10 pre-existing rpmdb problem(s), 'yum check' output follows: PackageKit-1.0.7-6.el7.x86_64 has missing requires of PackageKit-backend akonadi-mysql-1.9.2-4.el7.x86_64 has missing requires of mariadb-server perl-DBD-MySQL-4.023-5.el7.x86_64 has missing requires of libmysqlclient.so.18()(64bit) perl-DBD-MySQL-4.023-5.el7.x86_64 has missing requires of libmysqlclient.so.18(libmysqlclient_18)(64bit) 2:postfix-2.10.1-6.el7.x86_64 has missing requires of libmysqlclient.so.18()(64bit) 2:postfix-2.10.1-6.el7.x86_64 has missing requires of libmysqlclient.so.18(libmysqlclient_18)(64bit) 1:qt-mysql-4.8.5-13.el7.x86_64 has missing requires of libmysqlclient.so.18()(64bit) 1:qt-mysql-4.8.5-13.el7.x86_64 has missing requires of libmysqlclient.so.18(libmysqlclient_18)(64bit) zabbix-server-mysql-4.0.0-1.1alpha4.el7.x86_64 has missing requires of libmysqlclient.so.18()(64bit) zabbix-server-mysql-4.0.0-1.1alpha4.el7.x86_64 has missing requires of libmysqlclient.so.18(libmysqlclient_18)(64bit) Installing : mysql-community-common-5.7.21-1.el7.x86_64 1/4 Installing : mysql-community-libs-5.7.21-1.el7.x86_64 2/4 Installing : mysql-community-client-5.7.21-1.el7.x86_64 3/4 Installing : mysql-community-server-5.7.21-1.el7.x86_64 4/4 Verifying : mysql-community-server-5.7.21-1.el7.x86_64 1/4 Verifying : mysql-community-common-5.7.21-1.el7.x86_64 2/4 Verifying : mysql-community-libs-5.7.21-1.el7.x86_64 3/4 Verifying : mysql-community-client-5.7.21-1.el7.x86_64 4/4 Installed: mysql-community-server.x86_64 0:5.7.21-1.el7 Dependency Installed: mysql-community-client.x86_64 0:5.7.21-1.el7 mysql-community-common.x86_64 0:5.7.21-1.el7 mysql-community-libs.x86_64 0:5.7.21-1.el7 Complete!
五、初始化mysql
使用mysqld --initialize初始化mysql
--initialize :初始化时,会生成一个root用户和一个随机的密码,并且密码设置为过期,需要立即修改密码。确保数据库目录与文件的所有者为mysql账户,以便在运行mysqld服务时对这些目录和文件有读取与写入权限。以root身份运行mysqld服务,需指定--user=mysql选项。
注意:本例没有指定user选项,所以后面启动mysql时出现报错,需要修改相关文件系统权限才可以正常启动,使用下面的命令初始化会避免这一问题(未验证,待定):
#mysqld --initialize --user=mysql
--initialize-insecure :另外,可以使用该配置初始化,但这种方式会生成一个root用户,并且密码是空(第一次登录密码空即可),同样需要立即修改密码。可以使用mysql -u root --skip-password直接登录mysql。
本例采用第一种:
[root@rhel:~]#mysqld --initialize
初始化后,会生成一个root用户(mysql的用户,非系统的root用户)和一个随机密码。
[root@rhel:~]#which mysqld /usr/sbin/mysqld [root@rhel:~]#grep 'temporary password' /var/log/mysqld.log 2018-03-16T01:10:40.569111Z 1 [Note] A temporary password is generated for root@localhost: _iBhf7suG,go
六、启动mysql,查看mysql的状态并设置开机启动
[root@rhel:~]#systemctl start mysqld Redirecting to /bin/systemctl start mysqld.service Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
无法启动,需要修改/var/lib/mysql的权限(由于初始化时没有指定用户--user=mysql,未验证,待定)
[root@rhel:~]#chown mysql:mysql -R /var/lib/mysql
再次启动,成功
[root@rhel:~]#systemctl start mysqld Redirecting to /bin/systemctl start mysqld.service
查看mysql状态
[root@rhel:~]#systemctl status mysqld Redirecting to /bin/systemctl status mysqld.service ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor Active: active (running) since Fri 2018-03-16 09:37:07 CST; 1h 21min ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 16216 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run Process: 16194 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, sta Main PID: 16219 (mysqld) CGroup: /system.slice/mysqld.service └─16219 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/ Mar 16 09:37:05 rhel systemd[1]: Starting MySQL Server... Mar 16 09:37:07 rhel systemd[1]: Started MySQL Server.
设置开机启动
[root@rhel:~]#systemctl enable mysqld
其实质是,增加由/usr/lib/systemd/system/到/etc/systemd/system/multi-user.target.wants/下的软链接
七、修改mysql的root密码
首先,修改mysql的root用户密码,因为安全配置向导里需要输入密码,而随机生成的密码比较复杂,所以设置新密码方便输入。
共有两种修改方式:
第一种,使用mysqladmin修改密码
1.如果 mysql的root用户现在没有密码,你希望的密码修改为123456,那么命令是:
# mysqladmin -u root password 123456
2.如果mysql的root现在有密码(123456),那么修改密码为abcdef的命令是:
# mysqladmin -u root -p password abcdef
注意,命令回车后会提示旧密码,输入旧密码123456之后命令完成,密码修改成功。
[root@rhel:~]#mysqladmin -u root -p password abcdef Enter password: mysqladmin: [Warning] Using a password on the command line interface can be insecure. Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
第二种,若是忘记密码,可以通过以下方式重置mysql的root用户密码
编辑/etc/my.cnf文件,skip-grant-tables)
root@rhel:~]#vi /etc/my.cnf
[mysqld]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
skip-grant-tables
[root@rhel:~]#systemctl restart mysqld
然后登录,修改密码字段,刷新权限
[root@rhel:~]#mysql -uroot -p Enter password: ###密码为空,直接回车即可 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.21 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A mysql> update user set authentication_string=password('123456') where user='root'; mysql> flush privileges;
退出,然后编辑/etc/my.cnf文件,
root@rhel:~]#vi /etc/my.cnf [mysqld] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid skip-grant-tables #######删除此行
保存退出,重启mysql服务
[root@rhel:~]#systemctl restart mysqld
登录mysql,若提示需要再次修改密码,则根据提示修改,若无此提示直接连至数据库。
[root@rhel:~]#mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.21 Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
八、MySQL安全配置向导mysql_secure_installation
[root@rhel:~]#mysql_secure_installation Securing the MySQL server deployment. Enter password for user root: The 'validate_password' plugin is installed on the server. The subsequent steps will run with the existing configuration of the plugin. Using existing password for root. Estimated strength of the password: 25 Change the password for root ? ((Press y|Y for Yes, any other key for No) : n ... skipping. 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? (Press y|Y for Yes, any other key for No) : y ######是否移除匿名用户 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? (Press y|Y for Yes, any other key for No) : n ##############是否禁止mysql的root用户远程登录,测试环境,所以允许 ... skipping. 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? (Press y|Y for Yes, any other key for No) : n ########是否移除test数据库,测试环境,保留 ... skipping. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y #######是否重新加载权限表 Success. All done!
至此,安装完成。
上一篇: 动物一起吹牛大笑爆冷
下一篇: MySQL数据库索引简介