[后台开发系列之三]存储环境-Mysql数据库安装与配置(二)
之前有一篇也同样是安装MYSQL的教程,使用到了yum安装,但不是每台服务器都有yum的,而且也不是个操作服务器的人都有root权限的,以不变应万变,这次我们来使用安装包,全程手工安装mysql,确保每个环节都在操作者的掌控之中
此次篇幅,大部分内容来源于以下作者,感谢他们的贡献,侵删
Linux下安装MySQL数据库之压缩包方式安装
报错:1130-host ... is not allowed to connect to this MySql server
检查是否已安装MYSQL
使用以下命令查看当前安装mysql情况,查找以前是否装有mysql
rpm -qa|grep -i mysql
如果没找到,可以尝试使用
find / -name mysql
和whereis mysql
然后rm -rf
,删掉全部与mysql相关的文件
例如
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql/mysql
rm -rf /run/lock/subsys/mysql
rm -rf /usr/lib64/mysql
rm -rf /usr/local/mysql
rm -rf /usr/local/mysql/bin/mysql
rm -rf /usr/local/mysql/data/mysql
rm -rf /usr/local/mysql/include/mysql
rm -rf /usr/local/bin/mysql
rm -rf /usr/share/mysql
rm -rf /usr/local/bin/mysql
---------------------------------------------------- 清除完毕后,我们开始重装 ----------------------------------------------------
一、下载MySQL压缩包
MYSQL官网
由于我不太清楚资源包到底是哪一个,所以为了方便,就直接用现成的可下载的链接来下载资源包,习惯上,我会在服务器上有一个专门的用于下载软件的文件夹,在该文件夹中执行以下命令
wget http://dev.MySQL.com/get/Downloads/MySQL-5.7/mysql-5.7.11-Linux-glibc2.5-x86_64.tar.gz
二、解压、重命名、移动
解压后重命名为mysql,并把mysql移动到/usr/local下
-
解压
tar -xvf mysql-5.7.11-Linux-glibc2.5-x86_64.tar.gz
-
重命名(MV命令本是移动命令,在同目录下移动,就相当于重命名)
mv mysql-5.7.11-Linux-glibc2.5-x86_64 mysql
-
移动到其他目录
mv mysql /usr/local
三、创建mysql用户组及其用户
创建专用用户,可以大大提高数据库安全性,采用有限权限用户操作数据库,可以防止数据库被删除、泄漏等。但是这一步不是必须的,对于生产环境来说,是必要步骤,但是对于自用或者练手来说,使用root权限用户会比较方便,可以省去很多麻烦。
groupadd mysql//创建新的用户组,名为mysql
useradd -r -g mysql mysql//useradd -r参数表示mysql用户是系统用户,不可用于登陆系统;-g表示把mysql用户添加到mysql用户组中
四、创建目录
命令行切换当前目录到/usr/local/mysql
-
data:
mkdir /usr/local/mysql/data
-
tmp:
mkdir /usr/local/mysql/tmp
-
log
mkdir /usr/local/mysql/log
-
pid
mkdir /usr/local/mysql/pid
五、初始化MySQL配置表
此时 /usr/local/mysql
目录下有这些内容
初始化mysql,需要有配置文件,很多CentOS都默认存在
/etc/my.cnf
这个文件,这个是mysql的默认配置文件,如果没有这个文件,可以使用下面的命令,在安装目录下有一份可以使用的默认配置,将其拷贝到目标目录cp support-files/my-default.cnf /etc/my.cnf
- 编辑 my.cnf 文件,配置路径
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# socket = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
[client]
#客户端连接记录文件
socket = /usr/local/mysql/tmp/mysql.sock
[mysqld]
#安装目录
basedir = /usr/local/mysql
#数据存储目录
datadir = /usr/local/mysql/data
#数据库访问端口
port = 3306
#数据库访问记录文件
socket = /usr/local/mysql/tmp/mysql.sock
#数据库数据模式,将来可再修改
sql_mode=NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld_safe]
#mysql运行日志
log-error=/usr/local/mysql/log/mysqld.log
#mysql进程id
pid-file=/usr/local/mysql/pid/mysqld.pid
配置好配置文件后,初始化mysql,在/usr/local/mysql
目录下运行
bin/mysqld --initialize --user=root --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
#--user 启动mysql的用户;--basedir mysql安装目录;--datadir mysql数据仓库目录
参数--user=root
是指定运行mysql的用户权限,如果上述步骤中,有为mysql创建单独的用户,则此处写mysql,如果没有,则写root,意思是使用root用户来运行mysql。初始化之后,会在最后一行看到root账号的初始密码,或者到/var/log/mysqld.log
中也能找到
此时,有可能报 bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory错误,需要安装libaio,yum install -y libaio
- 把mysql目录下除了data外的改为root所有,data为mysql用户所有,同样,这一步按需设置
chgrp -R mysql .
chown -R root .
chown -R mysql data
六、mysqld服务加入开机自启动项
把mysql下的support-files/mysql.server服务脚本放到系统服务,并设置运行权限,这样就可以使用service mysql start启动服务
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
查看是否添加成功
chkconfig --list mysql
七、建立软连接
ln -s /usr/local/mysql/bin/mysql /usr/local/bin
ln -s /usr/local/mysql/bin/mysqladmin /usr/local/bin
ln -s /usr/local/mysql/bin/mysqld_safe /usr/local/bin
执行mysql命令时,则不需要到/usr/local/mysql/bin/目录下执行mysql。直接在任何路径下输入mysql,会执行/usr/local/bin下的mysql
八、修改密码
- 启动服务
service mysqld start
- 登陆mysql
mysql -u root -p
输入默认密码登录 - 修改密码
成功登陆到数据库后,用alert修改root密码为,abcd;
alter user root@localhost identified by 'abcd';
九、远程访问
执行以上步骤后,mysql已经安装完成,而且正常启动,但是外网还是无法直接访问,只能本地访问,此时,需要修改数据库访问权限,才能访问
- 改表法。
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改成"%"
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
- 授权法。
改表法,是不区分任务访问用户,直接开发让任何人访问,而授权法,是针对某一权限用户,只用某一用户,才可以远程访问,安全性更高
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION //赋予任何主机访问数据的权限
mysql>FLUSH PRIVILEGES //修改生效
mysql>EXIT //退出MySQL服务器
这样就可以在其它任何的主机上以root身份登录啦!
如果启动报错,可以使用如下方式尝试解决
centos7 mysql The server quit without updating PID file(错误解决)
centos7 mysql The server quit without updating PID file(错误解决)