centos7 yum 安装 mysql7

CentOS7的yum源中是没有mysql的,所以Centos7安装MySQL就不能像Centos6那么用yum源直接安装了

yum源中MySQL的安装
1. 查看MySQL是否启动

如果启用,先停掉mysql进程: pkill -9 mysqld

2. 查看MySQL相关的安装包
rpm -qa|grep -i mysql

如果有安装包,则通过以下命令将所有MySQL安装包删除
yum -y remove  mysql

3. 下载mysql的repo源,这源下载的是最新的版本
[fuyun@bigdata src]$ cd /usr/local/src/

在linux下wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

[fuyun@bigdata src]$ sudo wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm

[fuyn@bigdata src]$ sudo rpm -ivh mysql57-community-release-el7-8.noarch.rpm
 


[fuyun@bigdata src]$ sudo yum -y install mysql-server

4. 启动MySQL服务
[fuyun@bigdata src]$ sudo systemctl restart mysqld.service

5. 查看MySQL初始密码并登录MySQL
[fuyun@bigdata src]$ grep "password" /var/log/mysqld.log

用上面截图的密码登录MySQL
mysql -u root -p

第一次登陆 ,需要重置密码 要不什么也不能操作


接下来重置密码:5.7.20 为了安全密码 必须包含 数字字母(大小写)符号


alter user 'root'@'localhost' identified by 'Mysql@123';

最后记得刷新权限;
flush privileges

也可以 直接再添加新用户
mysql> CREATE USER 'fuyun'@'%' IDENTIFIED BY 'Mysql@123';

设置root用户可以在任意ip登录
mysql> grant all privileges on *.* to 'root'@'%' identified by 'Mysql@123' with grant option;

查询用户登录ip和用户名称
mysql> select host, user from mysql.user;

删除某用户信息
mysql> delete from mysql.user where host = 'localhost' and user = 'root';

添加或修改后记得再次刷新权限
flush privileges

如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码
grant all privileges on *.* to 'myuser'@'192.168.1.3' identified by 'mypassword' with grant option;

flush privileges;

如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码

grant all privileges on dk.* to 'myuser'@'192.168.1.3' identified by 'mypassword' with grant option;

flush privileges;

设置MySQL自启动
查看系统当前默认启动项目的方法,不再是setup之类的了。
systemctl list-unit-files


设置MySQL自启动
systemctl enable mysqld

设置禁止MySQL自启动

在开启启动中遇到自启动问题
问题
如果出现系统重启后,发现mysqld服务启动正常,但是依赖mysql数据库的应用程序A启动失败。
查看日志显示,程序A启动的时候链接数据库失败。

可能原因
mysqld服务是正常启动的。
此时手动重启程序A,A也正常运行。
结论:说明程序A启动的时候,mysqld可能没有启动。

解决方法
查看系统当前默认启动项目的方法,不再是setup之类的了。
systemctl list-unit-files
执行此命令能查看当前系统的服务启动和服务状态。

取消mysqld的自启动
systemctl disable mysqld
执行该命令后再查看当前系统的服务状态:

自定义/etc/rc.local
先执行systemctl start mysqld
再执行startA

 

=====================================================================

此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:

[root@localhost ~]# grep "password" /var/log/mysqld.log

  如下命令进入数据库:

[root@localhost ~]# mysql -uroot -p

  输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

  这里有个问题,新密码设置的时候如果设置的过于简单会报错:

  原因是因为MySQL有密码设置的规范,具体是与validate_password_policy的值有关:

 

  MySQL完整的初始密码规则可以通过如下命令查看:

 
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 4     |
| validate_password_mixed_case_count   | 1     |
| validate_password_number_count       | 1     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 1     |
+--------------------------------------+-------+
7 rows in set (0.01 sec)
 

  密码的长度是由validate_password_length决定的,而validate_password_length的计算公式是:

validate_password_length = validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)

 

我的是已经修改过的,初始情况下第一个的值是ON,validate_password_length是8。可以通过如下命令修改:

mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;

  设置之后就是我上面查出来的那几个值了,此时密码就可以设置的很简单,例如1234之类的。到此数据库的密码设置就完成了。

  但此时还有一个问题,就是因为安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉:

[root@localhost ~]# yum -y remove mysql57-community-release-el7-10.noarch

  此时才算真的完成了。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章