文章目录
注:以下命令全部在root用户的mysql文件路径下进行操作,其它问题集中在最后解析
一、查看系统是否默认安装mysql,CentOS7下默认安装了mariadb,是mysql的一个分支,我们这里卸载掉
rpm -qa|grep mariadb #查找系统是否存在Mariadb
rpm -e mariadb* --nodeps #rpm -e 为卸载,--nodeps为强制卸载指令,
#如果一次性卸载不完就一个个卸载,rpm -e [第一步查找出的文件名] --nodeps
附:同样的方式可以卸载旧版本mysql
二、解压压缩包
tar -zxvf mysql-5.6.12-linux-x64.gz #解压
mv mysql-5.6.12-linux-glibc2.5-x86_64 mysql #更改文件夹名
三、添加新用户组以及新用户
groups mysql #检查是否已经存在mysql这个用户组了
groupadd mysql #添加新用户组mysql
useradd -r -g mysql mysql #添加新用户并且分配到mysql用户组,"-r"为建立系统账号,"-g"指定用户所属的群组
四、安装mysql
cp ./support-files/my-default.cnf /etc/my.cnf #安装配置文件
my.cnf(要记得在mysqld文件下配置my.cnf位置,不然my.cnf文件默认在basedir下生成,优先读取/my.cnf)
[mysql]
#设置mysql默认字符集
default-character-set=utf8
[mysqld]
#设置mysql安装目录
basedir = /hadoopeco/mysql
#设置mysql数据库的数据的存放目录
datadir = /hadoopeco/mysql/data
#设置服务器端口
port = 3306
# server_id = .....
socket = /var/lib/mysql/mysql.sock
#允许最大连接数
max_connections=200
#
character-set-server=utf8
#设置创建表时默认使用的引擎
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
mkdir ./data #创建data文件夹
#安装数据库,注意,安装目录和解压目录要在同一个目录下,不然会报找不到my-default.cnf文件异常,
./scripts/mysql_install_db --user=mysql --basedir=/hadoopeco/mysql/ --datadir=/hadoopeco/mysql/data/
五、配置mysql
chmod 777 /etc/my.cnf #解锁最大权限
#添加mysqld服务控制脚本的执行权限
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
此前需要进mysql.server文件中进行配置basedir和datadir
basedir=/hadoopeco/mysql
datadir=/hadoopeco/mysql/data
chkconfig --add mysqld #将mysqld服务添加到系统服务
chkconfig --list mysqld #查看服务是否生效
#输出结果类似:mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
systemctl list-dependencies mysqld #查看当前服务的其它依赖服务以及其它依赖对象
systemctl list-unit-files #查看系统所有服务
systemctl start mysqld #启动mysql
systemctl stop mysqld #停止mysql
systemctl restart mysqld #重启mysql
systemctl status mysqld #查看mysql状态
六、配置MySQL环境变量
/etc/profile
export MYSQL_HOME=/hadoopeco/mysql
PATH=${MYSQL_HOME}/bin:$PATH
source /etc/profile
七、向防火墙添加开放端口(防火墙开启的前提下)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
八、远程连接MYSQL Server
默认情况下不允许外部主机进行连接的,外部主机直接连接被MySQL Server拒绝
ERROR 1130: Host '192.168.152.1' is not allowed to connect to this MySQL server
解决办法:
1、改表法:可能你的用户(譬如mysql下的root用户,不是linux的root用户)不允许从远程登录,只能在localhost登录,只需要在当前主机mysql的user表中将host参数的值“localhost”修改为“%”就可以了。
[root@master /]mysql -u root -p
mysql>update user set host = '%' where user = 'root'
mysql>select host,user from user;
2、授权法
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
%代表全部ip,可以设定只允许被某ip进行访问,增加安全性
九、其它问题
如果在重启系统或者使用systemctl start mysqld命令时因为mysql/data文件夹下的id改变的问题启动失败时候,检查一下是不是有些关键配置在数据库安装的时候漏掉了,数据库安装完了,然后在进行服务系统配置就可能会因为数据库关键配置的变动在数据库安装的前后引起的唯一id不一致的问题启动失败,这时候重新安装一下数据库就行
这条命令:
./scripts/mysql_install_db --user=mysql --basedir=/hadoopeco/mysql/ --datadir=/hadoopeco/mysql/data/
报1018错误解决:
ERROR 1018 (HY000): Can't read dir of './mysql/' (errno: 13 - Permission denied)
报这个错误的都是库目录的属主不对,旧版本mysql数据库默认的用户为mysql,更改一下目录的属主就好
这条命令(我的在在mysql目录内使用的):
chown -R mysql:mysql ./
报1045错误解决:
报这个错误通常有以下四个原因之一:
1)Root用户密码错误
2)用户的端口号或IP引起(主机host配置问题或mysql内user表中将localhost转化为%表示全局ip的时候在宿主机上使用默认的mysql -u root -p可能会失效,因此需要更加精确的输入 mysql -h ip -u root -p)
3) mysql 服务器停止
4)配置文件错误(my.cnf):输入错误无效的内容导致,好好排查
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
这个错误一般是由于密码错误引起的,自然就是重置密码一了百了
报错疑点1:之前设定过密码了,当时还是报错,自己感觉密码没错误,设定完密码后有没有刷新特权了,没有刷新特权就进去名为“mysql”的数据库刷新一下吧,没有刷新特权使用的还是默认密码,有没有默认的我不清楚,习惯性重设密码了
这条命令:
mysql>flush privileges;
报错疑点2:自然就是忘记密码了
首先修改my.cnf(window的为my.ini)
[mysqld]
skip-grant-tables #跳过授权表,用来忽略跳过密码验证的
在localhost的mysql管理员用户下直接通过“mysql”命令进入mysql
例:[root@master /]# mysql
mysql>use mysql;
mysql>update user set password=password("new password") where user="root"
mysql>flush privileges;
mysql>quit;
最后在在my.cnf中将"skip-grant-tables"注释掉,
重启mysql:systemctl restart mysqld
报1067错误解决
这个错误一般都只会在高于5.6.6版本的数据库中报错的
在my.cnf添加“explicit_default_for_timestamp=true”就可以了,具体情况另行百度