linux Centos7 基础环境搭建-MySQL

环境

  • linux:centOS 7

  • jdk:8

  • Mysql:5.7.24

Yum安装

安装前,我们可以检测系统是否自带安装 MySQL:

   rpm -qa | grep mysql

如果你系统有安装,那可以选择进行卸载,有两种模式:

  • 普通删除模式
    rpm -e mysql
  • 强力删除模式
    rpm -e --nodeps mysql

如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

安装

  • 下载mysql安装包
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
  • 安装
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
  • 下载安装依赖包
yum install mysql-server      //第一次下载这里会比较慢
  • 验证是否安装成功
mysqladmin –version

mysqladmin Ver 8.42 Distrib 5.7.22, for Linux on x86_64

[root@VM_10_10_centos ~]# mysql -V
mysql  Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using  EditLine wrapper

  • 启动MySQL
   sudo systemctl start mysqld
  • 查看 MySQL 运行状态
    sudo systemctl status mysqld
  • 停止 MySQL
    sudo systemctl stop mysqld
  • 重启 MySQL
    sudo systemctl restart mysqld

关于密码

Mysql 5.7 默认安装之后 root 是有密码的,获取 MySQL 的临时密码 为了加强安全性,MySQL 5.7 为 root 用户随机生成了一个密码,在 error log 中,关于 error log 的位置,如果安装的是 RPM 包,则默认是 /var/log/mysqld.log 。 只有启动过一次 mysql 才可以查看临时密码。

在利用 YUM 安装 mysql 数据库过程中,系统会自动生成一个临时密码,获取方式为:

   grep 'temporary password' /var/log/mysqld.log
  • 没有密码

    如果以前安装过 mysql,这时的 mysqld.log 中就不会有 temporary password
    这时就需要删除 mysql 残留的数据:

    rm -rf /var/lib/mysql
  • 执行完毕后需要重新启动MySQL服务:
    sudo systemctl restart mysqld

这时就可以通过上面的命令去查找数据库生成的临时密码了

mysql 1130 错误

可能是你的帐号不允许从远程登陆,只能在 localhost。这个时候只要在 localhost 的那台电脑,登入 mysql 后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称”%”

mysql -u root -pvmwaremysql>use mysql; 

mysql> update user set host = '%' where user = 'root'; 

mysql> select host, user from user;

使得我们当前的账户和密码能够应用的所有的远程主机连接:

 GRANT ALL PRIVILEGES ON . TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 

 FLUSH PRIVILEGES;

源码安装

  • 下载MySQL
#进入local目录
cd /usr/local/              
#下载mysql
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
  • 解压MySQL修改名称
#解压mysql
tar -zxvf mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
#修改mysql名称
mv mysql-5.6.33-linux-glibc2.5-x86_64 mysql
  • 添加用户和组
#添加用户组
groupadd mysql
#添加用户mysql到用户组mysql
useradd -g mysql mysql
  • 安装mysql
#进入mysql目录
cd /usr/local/mysql
#把目录权限分配给mysql组下的mysql用户
chown -R mysql:mysql ./
#安装mysql
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
#安装mysql语句报错执行
yum -y install perl perl-devel
#复制配置文件
cp support-files/mysql.server /etc/init.d/mysqld
#添加权限
chmod 755 /etc/init.d/mysqld
#复制启动脚本
cp support-files/my-default.cnf /etc/my.cnf
  • 修改配置文件
#打开配置目录
vi /etc/init.d/mysqld
#增加目录配置
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
  • 启动,修改root密码,添加远程连接用户权限
#修改环境变量配置文件
vi /etc/profile
#增加mysql全局变量,使service mysqld start可以在任意位置使用
export PATH=$PATH:/usr/local/mysql/bin
#即时生效
source /etc/profile
#启动mysql
service mysqld start


#mysql刚安装完毕没有密码进入mysql命令行
mysql -uroot -p
#查询mysql用户
select User, Host, Password FROM mysql.user;
#修改root密码
update mysql.user set password=password('root') where User="root";
#为root添加远程权限
grant all privileges on *.* to 'root'@'%'identified by 'root' with grant option;
#刷新权限
flush privileges; 

  • 修改mysql启动占用内存过大的问题,mysql5.6以上启动占用内存默认为128m,在mysql根目录下my.cnf添加以下配置可修改为默认占用为40m
performance_schema_max_table_instances = 400
table_definition_cache = 400
table_open_cache = 256

问题合辑:

【问题】

有时候,只是为了自己测试,不想密码设置得那么复杂,譬如只想设置root的密码为123456。

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');

但是会报错:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

【原因】

原来MySQL5.6.6版本之后增加了密码强度验证插件validate_password,相关参数设置的较为严格。
使用了该插件会检查设置的密码是否符合当前设置的强度规则,若不满足则拒绝设置。影响的语句和函数有:create user,grant,set password,password(),old password。

【解决】
1) 查看mysql全局参数配置

该问题其实与mysql的validate_password_policy的值有关。
查看一下msyql密码相关的几个全局参数:


mysql> select @@validate\_password\_policy;  
+----------------------------+  
| @@validate\_password\_policy |  
+----------------------------+  
| MEDIUM                     |  
+----------------------------+  
1 row in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'validate_password%';  
+--------------------------------------+--------+  
| Variable_name                        | Value  |  
+--------------------------------------+--------+  
| validate\_password\_dictionary_file    |        |  
| validate\_password\_length             | 8      |  
| validate\_password\_mixed\_case\_count   | 1      |  
| validate\_password\_number_count       | 1      |  
| validate\_password\_policy             | MEDIUM |  
| validate\_password\_special\_char\_count | 1      |  
+--------------------------------------+--------+  
6 rows in set (0.08 sec)

2)参数解释

validate_password_dictionary_file
插件用于验证密码强度的字典文件路径。

validate_password_length
密码最小长度,参数默认为8,它有最小值的限制,最小值为:validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)

validate_password_mixed_case_count
密码至少要包含的小写字母个数和大写字母个数。

validate_password_number_count
密码至少要包含的数字个数。

validate_password_policy
密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG。有以下取值:
Policy                 Tests Performed                                                                                                        
0 or LOW               Length                                                                                                                      
1 or MEDIUM         Length; numeric, lowercase/uppercase, and special characters                             
2 or STRONG        Length; numeric, lowercase/uppercase, and special characters; dictionary file      
默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。

validate_password_special_char_count
密码至少要包含的特殊字符数。

3)修改mysql参数配置


mysql> set global validate\_password\_policy=0;  
Query OK, 0 rows affected (0.05 sec)

mysql> set global validate\_password\_mixed\_case\_count=0;  
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate\_password\_number_count=3;  
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate\_password\_special\_char\_count=0;  
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate\_password\_length=3;  
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'validate_password%';  
+--------------------------------------+-------+  
| Variable_name                        | Value |  
+--------------------------------------+-------+  
| validate\_password\_dictionary_file    |       |  
| validate\_password\_length             | 3     |  
| validate\_password\_mixed\_case\_count   | 0     |  
| validate\_password\_number_count       | 3     |  
| validate\_password\_policy             | LOW   |  
| validate\_password\_special\_char\_count | 0     |  
+--------------------------------------+-------+  
6 rows in set (0.00 sec)

4)修改简单密码:


mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123');  
Query OK, 0 rows affected, 1 warning (0.00 sec)

OK了,完美解决!

转载于:https://my.oschina.net/zxzzhou/blog/3089763

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值