1.系统环境
《CentOS7.2环境源码编译安装Php5.6.36》
《CentOS7.2环境源码编译安装Nginx-1.14.0》
# cat /etc/redhat-releaseCentOS Linux release 7.2.1511 (Core) # uname -a Linux c72 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
1.1.准备:
站点:https://www.mysql.com/
下载地址:https://dev.mysql.com/downloads/mysql/5.6.html#downloads
包地址:https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.35.tar.gz
1.2.安装基础依赖包
# yum install -y gcc gcc-c++ # yum install -y cmake # yum install -y ncurses-devel # yum install -y autoconf # yum install -y perl perl-devel
或是使用以下命令,结果相同:
# yum install -y gcc gcc-c++ cmake ncurses-devel autoconf perl perl-devel
上面的gcc、gcc-c++我们在安装Nginx的时候已经安装过了,这次可以跳过这一步。如果不清楚是否安装可以使用以下命令查询:
# rpm -qa gcc gcc-c++ cmake ncurses-devel autoconf perl perl-devel perl-5.16.3-292.el7.x86_64 gcc-4.8.5-28.el7_5.1.x86_64 gcc-c++-4.8.5-28.el7_5.1.x86_64
1.3.创建Mysql目录和用户
# mkdir -p /usr/local/mysql/data
# useradd -u 8003 -M -s /sbin/nologin mysql
1.4.解压并安装Mysql
# tar -xzvf mysql-5.6.35.tar.gz # cd mysql-5.6.35 # cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DINSTALL_DATADIR=/usr/local/mysql/data \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DEXTRA_CHARSETS=all \ -DENABLED_LOCAL_INFILE=1 # make && make install
CMAKE参数说明:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
:默认安装目录
-DINSTALL_DATADIR=/usr/local/mysql/data
:数据库存放目录
-DDEFAULT_CHARSET=utf8
:使用utf8字符
-DDEFAULT_COLLATION=utf8_general_ci
:校验字符
-DEXTRA_CHARSETS=all
:安装所有扩展字符集
-DENABLED_LOCAL_INFILE=1
:允许从本地导入数据
-DMYSQL_USER=mysql
-DMYSQL_TCP_PORT=3306
CMAKE详细配置请参照mysql官网
注意事项:
如安装失败重新编译时,需要清除旧的对象文件和缓存信息。
# make clean # rm -f CMakeCache.txt # rm -rf /etc/my.cnf
1.5.设置Mysql目录权限
# cd /usr/local/ # chown -R mysql:mysql mysql
1.6.配置mysql服务
1.6.1.复制默认配置文件
# cp /tmp/mysql-5.6.35/support-files/my-default.cnf /etc/my.cnf cp:是否覆盖"/etc/my.cnf"? y
1.6.2. 创建基础表:
# cd /usr/local/mysql # ./scripts/mysql_install_db --user=mysql
1.6.3.添加环境变量
# vim /etc/profile
export MYSQL_HOME="/usr/local/mysql" export PATH="$PATH:$MYSQL_HOME/bin"
# source /etc/profile
1.6.4.复制文件
# cp support-files/mysql.server /etc/init.d/mysql
将mysql加入到可控制启动的服务的文件夹内,并命名mysql,即service可控制的服务名,至此可用service mysql start控制启动mysql,/etc/init.d 是/etc/rc.d/init.d的链接,在/etc/init.d添加一个文件会同步在/etc/rc.d/init.d下
1.6.5.设置开机自启
# chkconfig --add mysql # chkconfig 注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。 如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。 欲查看对特定 target 启用的服务请执行 'systemctl list-dependencies [target]'。 mysql 0:关 1:关 2:开 3:开 4:开 5:开 6:关 netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关 network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
以上可以看出mysql已配置开机自动启动,级别包括(2、3、4、5),如果显示关,可以运行以下命令启动
# chkconfig mysql on
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息,谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接
–add : 加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据,服务脚本必须存放在/etc/ini.d/目录下
现在可以使用下面的命令启动mysql
# service mysql start
启动mysql服务
# service 服务名 stop
停止mysql服务
# service 服务名 restart
重启mysql服务
下面两种命令作用相同
systemctl [stop|start|restart] 服务名
service 服务名 [stop|start|restart]
1.7.配置root密码
# mysqladmin -u root password New password: Confirm new password:
注意:密码输入的时候不回显,需要输入两次一样的密码。
配置好了之后我们可以使用以下命令验证是否设置成功。
# mysql -uroot -p密码
# mysql -uroot -paA111111 Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.6.35 Source distribution Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
登陆成功之后就会进入到mysql中,并以mysql>显示。
1.8.配置root远程连接
mysql>use mysql; mysql>desc user; mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root"; //为root添加远程连接的能力。 mysql>update user set Password = password('aA111111') where User='root'; mysql>select Host,User,Password from user where User='root'; mysql>flush privileges; //刷新权限 mysql>exit //退出
grant option
权限使用grant all privileges on *.* to root@"%" identified by "aA111111" with grant option;
如果没有生效使用此命令刷新一下flush privileges;
mysql>update user set Password = password('aA111111') where User='root';
注意:此密码是设置root远程连接时所需要提供的密码,不是数据库管理员root的登陆密码。
1.9.4个GRANT示例
1.9.1.示例1
给来自172.20.10.146的用户test1分配可对数据库dbname的tablename表进行SELECT
,INSERT
,UPDATE
,DELETE
,CREATE
,DROP
等操作的权限,并设定密码为aA11111
mysql>GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON dbname.tablename TO 'test1'@'172.20.10.146' IDENTIFIED BY 'aA111111';
1.9.2.示例2
给来自172.20.10.146的用户test2分配可对数据库dbname所有表进行所有操作的权限,并设定口令为aA111111
mysql>GRANT ALL PRIVILEGES ON dbname.* TO 'test2'@'172.20.10.146' IDENTIFIED BY 'aA111111';
1.9.3.示例3
给来自172.20.10.146的用户test3分配可对所有数据库的所有表进行所有操作的权限,并设定口令为aA111111
mysql>GRANT ALL PRIVILEGES ON *.* TO 'test3'@'172.20.10.146' IDENTIFIED BY 'aA111111';
1.9.4.示例4
给本机用户test4分配可对所有数据库的所有表进行所有操作的权限,并设定口令为aA111111
mysql>GRANT ALL PRIVILEGES ON *.* TO 'test4'@'localhost' IDENTIFIED BY 'aA111111';
1.10.防火墙放行3306端口
CentOS升级到7之后,使用firewalld代替了原来的iptables。下面记录如何使用firewalld开放Linux端口
–zone : 作用域,网络区域定义了网络连接的可信等级。这是一个一对多的关系,这意味着一次连接可以仅仅是一个区域的一部分,而一个区域可以用于很多连接
–add-port : 添加端口与通信协议,格式为:端口/通讯协议,协议是tcp 或 udp
–permanent : 永久生效,没有此参数系统重启后端口访问失效
# firewall-cmd --zone=public --add-port=3306/tcp --permanent # firewall-cmd --reload
1.11.root密码找回
停止mysql服务,或者命令systemctl stop mysql
# service mysql stop 进入/usr/local/mysql # cd /usr/local/mysql/
通过mysqld_safe启动mysql,并且启动mysql时不启动grant-tables授权表
# ./bin/mysqld_safe --basedir=/usr/local/mysql \ --datadir=/usr/local/mysql/data \ --skip-grant-tables & mysql -u root mysql mysql>UPDATE user SET password=PASSWORD("new_password") WHERE user='root'; 修改root密码 mysql>FLUSH PRIVILEGES; 刷新权限