Loading
0

CentOS7.2环境源码编译安装Mysql5.6.35

系统环境(已安装的包可参考上两篇文章):

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

准备:

所有wget下载的包默认都放在/tmp目录下

站点: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


一、安装gcc、gcc-c++、cmake、ncurses-devel、autoconf、perl、perl-devel


# 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

二、创建Mysql的安装目录及数据目录、mysql用户


# mkdir -p /usr/local/mysql/data
# useradd -u 8003 -M -s /sbin/nologin mysql

三、开始解压并安装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

四、设置Mysql目录权限


# cd /usr/local/
# chown -R mysql:mysql mysql

五、配置mysql的服务到系统中(chkconfig管理)


5.1、复制默认的配置文件到/etc/目录下

# cp /tmp/mysql-5.6.35/support-files/my-default.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y

5.2、创建基础表:

# cd /usr/local/mysql
#  ./scripts/mysql_install_db --user=mysql

5.3、添加mysql的环境变量并让配置文件立即生效

# vim /etc/profile
export MYSQL_HOME="/usr/local/mysql"
export PATH="$PATH:$MYSQL_HOME/bin"

# source /etc/profile

5.4、复制mysql的启动文件到/etc/init.d/目录下

# 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下

5.5、添加mysql到chkconfig中并设置为开机自启动

# 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]

六、配置mysql数据库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>显示。

七、为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  
//退出

mysql>update user set Password = password('aA111111') where User='root';

注意:此密码是设置root远程连接时所需要提供的密码,不是数据库管理员root的登陆密码。

八、以下其余4个GRANT例子


8.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';

8.2、给来自172.20.10.146的用户test2分配可对数据库dbname所有表进行所有操作的权限,并设定口令为aA111111

mysql>GRANT ALL PRIVILEGES ON dbname.* TO 'test2'@'172.20.10.146' IDENTIFIED BY 'aA111111';

8.3、给来自172.20.10.146的用户test3分配可对所有数据库的所有表进行所有操作的权限,并设定口令为aA111111

mysql>GRANT ALL PRIVILEGES ON *.* TO 'test3'@'172.20.10.146' IDENTIFIED BY 'aA111111';

8.4、给本机用户test4分配可对所有数据库的所有表进行所有操作的权限,并设定口令为aA111111

mysql>GRANT ALL PRIVILEGES ON *.* TO 'test4'@'localhost' IDENTIFIED BY 'aA111111';

九、开启防火墙mysql的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

十、忘记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;

刷新权限

扫码打赏博主扫码打赏博主

如果你认为本站解决了您的问题或得到了帮助,请自愿打赏博主,谢谢支持!

最后编辑于:2018/8/5作者: 盛行

盛行

企业应用技术爱好者,喜欢分享知识。如果文章中有错误,欢迎指正,谢谢。

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

加博主Q,请注明来意。

加博主Q,请注明来意。