centos 7安装配置mysql
作为一个后端小白,也跟着网上的教程在腾讯云上面安装过几次mysql,也跳过不少坑,但是一直没有整理怎么去安装步骤,所以每次安装都是需要百度去找一下教程,但是这些教程很多比较乱,所以我打算自己写一篇关于我自己的安装经历的教程,我将哪些比较碎片的教程整理了一下。
一、 下载 mysql rpm 包
由于centos 7里面的yum 源里面没有mysql 的rpm 包,我必须到官网下载或者到其他镜像源去下载,这里我直接去官网下载。 在命令行中 输入以下命令:
//我这里选择的是5.7的版本,当然你也可以选择其他版本不影响
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
有的linux 没有安装wget 的命令,可以通过命令安装 wget yum install wget
当然也可以到下载wget的rpm包:http://mirrors.163.com/centos/7/os/x86_64/Packages/ 在这个网站搜索wget-1.14-15.el7_4.1.x86_64.rpm即可)。然后运行: rpm -ivh wget-1.14-15.el7_4.1.x86_64.rpm **
二、使用yum命令即可完成安装
注意:必须进入到 /etc/yum.repos.d/目录后再执行以下脚本
1、安装命令:
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
yum install mysql-server
2、启动msyql:
service mysqld start
当然有的也是可以通过下面这个命令来启动。
systemctl start mysql.service
三、登录问题
一般登录都是都是一下几个步骤,就是获取密码,然后命令登录。但是我们在登录后也会遇到几个问题。下面我会记录下来。
1、获取安装时的临时密码(在第一次登录时就是用这个密码):
grep 'temporary password' /var/log/mysqld.log
然后mysql -uroot -p
然后回车然后输入密码就进去了。
mysql -uroot -p
这里输入你的密码
2、倘若没有获取临时密码,则
删除原来安装过的mysql残留的数据: rm -rf /var/lib/mysql
。再启动mysql,然后再启动MySQL 输入mysql -uroot
,然后回车直接进去了。
3、登录不上的问题。
报错:ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO 或者YES)
出现access denied的原因有如下可能:
1)mysql的服务器停止
2)用户的端口号或者IP导致
3)mysql的配置文件错误----my.ini等文件,但是有的是my.conf
4)root用户的密码错误
解决方法
若MySQL已经没有启动,重启MySQL服务器:systemctl start mysql.service
若用户的端口号与IP不一致,打开my.ini文件进行编辑。全部编辑替换为: port=X
my.ini文件误输入无效内容,不知道到何处。
root用户密码错误或者上面图片报的错误,到安装的MySQL的目录下,找my.conf文件我的文件在(/etc/my.cnf);
在[mysqld]后添加skip-grant-tables(使用 set password for设置密码无效,且此后登录无需键入密码)使其登录时跳过权限检查.
重启MySQL服务器。
登录mysql,键入mysql –uroot –p;直接回车(Enter)
然后输入flush privileges;
否者或报错如下图
键入set password for ‘root’@‘localhost’=password(‘123456’);
在my.ini文件添加从此后无需键入密码
再把my.ini的skip-grant-tables删除,然后重启MySQL服务器
设置密码成功。。。
skip-name-resolv #禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时候。但是需要注意的是,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式了,否则MySQL将无法正常处理连接请求
四、修改账户密码
修改密码是mysql里面DDL 的语法。你要去查看原始mysql 库的里面的user表。里面记录着用户信息。
1. 首先查看数据库
mysql > show databases;
2. 查看表
mysql> use mysql;
mysql> show tables;
3. 查看用详情
mysql> select host, user, authentication_string from user;//查看用详情
在这里详细介绍一下我在这里面跳过的坑。
坑1:host 表示链接数据库的主机名,localhost 表示只能当前机器能连接数据库,后期如果你的应用和数据库不是部署在一台机器上面或者pc想要用Navicat连接mysql的话,必须改掉当前的host,可以直接把host 的地址改为%,这个表示任何机器都可以连接该数据,连接权限全部放开。这样不安全,不推荐,还有把host 改为制定ip。
坑2:有的时候改密码改不了,两种情况但是都是差不多,一种就是就是你的数据库密码安全等级很高,而你的密码设置的太过于简单,所以需要设置密码安全等级。还有就是设置了最小的密码长度,你设置的密码长度太短了。可以通过下面详细介绍和方法去解决。
SHOW VARIABLES LIKE 'validate_password%';
validate_password_number_count 参数是密码中至少含有的数字个数,当密码策略是MEDIUM或以上时生效。
validate_password_special_char_count 参数是密码中非英文数字等特殊字符的个数,当密码策略是MEDIUM或以上时生效。
validate_password_mixed_case_count 参数是密码中英文字符大小写的个数,当密码策略是MEDIUM或以上时生效。
validate_password_length 参数是密码的长度,这个参数由下面的公式生成
validate_password_number_count+ validate_password_special_char_count+ (2 * validate_password_mixed_case_count)
validate_password_dictionary_file 参数是指定密码验证的字典文件路径。
validate_password_policy 这个参数可以设为0、1、2,分别代表从低到高的密码强度,此参数的默认值为1,如果想将密码强度改若,则更改此参数为0。
更改密码策略为LOW
set global validate_password_policy=0;
更改密码长度
set global validate_password_length=0;
密码最小长度为4
SHOW VARIABLES LIKE 'validate_password%';
4. 修改密码
当然修改密码有很多种,我使用最常用的三种方式在这里我解释上面的修改host的方式
方式一:登录mysql 操作,用SET PASSWORD命令
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
方式二:登录mysql 用update 命令来操作user 表,但是这里要求的权限很高。
mysql> use mysql;
mysql> update user set password=password('123') where user='root' and host='localhost';
mysql> flush privileges; //刷新权限
方法三:用mysqladmin
mysqladmin -u用户名 -p旧密码 password 新密码
五、添加用户并且授权
1. 添加用户
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
username: 你将创建用户的名字
localhost : 本地用户,如果想让该用户可以从任意远程主机登陆,可以使用%,也可以指定ip来登录连接
identified by : 密码为。。。。。
password : 密码
2.授权用户
GRANT privileges ON databasename.tablename TO 'username'@'host';
privileges – 用户的操作权限,如SELECT , INSERT , UPDATE 等如果要授予所有的权限则使用ALL说明:
databasename – 数据库名
tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用* 表示, 如*.*
3.收回授权
REVOKE all ON databasename.tablename FROM 'username'@'localhost';
privileges – 要收回的用户的操作权限,如SELECT , INSERT , UPDATE 等.如果要授予所有 的权限则使用ALL说明:
databasename – 数据库名
tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用* 表示, 如*.*
4.删除用户
DROP USER 'username'@'localhost';
以上便是我整理的安装mysql的步骤,当让不同的系统环境可能安装的步骤也不是一样的,但是大差不差,后面遇到心得话会更新。当然还有一点时当远程连接mysql时不仅要开放host 的ip 权限,还要打开系统防火墙的端口(一般3306),最后还需要到配置文件里(etc/mysql/mysql.cnf.d/mysqld.cnf)设置地址将默认的bind-address = 127.0.0.1(可能不写)改为 bind-address = 0.0.0.0。如果是阿里云或者腾讯云上面部署的mysql ,可能还需要设置安全组,好了就这么多了,我要继续搬砖了。