centos 7 编译安装 mysql 及 添加 mysql 到系统服务

centos 7 编译安装 mysql 及 添加 mysql 到系统服务
首先安装依赖包,避免在安装过程中出现问题
[root@bogon liuzhen]# yum -y install gcc gcc-c++ cmake ncurses-devel autoconf perl perl-devel

源码包地址:wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.35.tar.gz
创建mysql安装目录以及数据存放目录
[root@bogon liuzhen]# mkdir /data/server/mysql
[root@bogon liuzhen]# mkdir /data/server/mysql/data
mkdir创建文件夹
-m : 对新建目录设置存取权限
-p : 此时若路径中的某些目录尚不存在,系统将自动建立好那些尚不存在的目录

创建用户、用户组
[root@bogon liuzhen]# groupadd mysql
[root@bogon liuzhen]# useradd -r -g mysql mysql

开始安装[root@bogon liuzhen]# tar -zxvf mysql-5.6.35.tar.gz
tar.gz的用tar zxvf解压,tar.bz2的用tar jxvf解压
[root@bogon liuzhen]# cd mysql-5.6.35

[root@bogon mysql-5.6.35]# cmake . -DCMAKE_INSTALL_PREFIX=/data/server/mysql
-DINSTALL_DATADIR=/data/server/mysql/data
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DEXTRA_CHARSETS=all
-DENABLED_LOCAL_INFILE=1
[root@bogon mysql-5.6.35]# 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

注意事项:如安装失败重新编译时,需要清除旧的对象文件和缓存信息。
[root@bogon mysql-5.6.35]# make clean
[root@bogon mysql-5.6.35]# rm -f CMakeCache.txt
[root@bogon mysql-5.6.35]# rm -rf /etc/my.cnf
设置目录权限[root@bogon liuzhen]# cd /data/server/mysql
[root@bogon mysql]# chown -R mysql:mysql
[root@bogon mysql]# chown -R mysql:mysql data

将mysql的启动服务添加到系统服务中[root@bogon liuzhen]# cd /data/server/mysql
[root@bogon mysql]# cp support-files/my-default.cnf /etc/my.cnf
创建基础表:[root@bogon liuzhen]# cd /usr/local/mysql
[root@bogon mysql]# ./scripts/mysql_install_db --user=mysql

配置环境变量[root@bogon liuzhen]# vim /etc/profile
在最下面添加下面两个值export MYSQL_HOME="/data/server/mysql"
export PATH=“ P A T H : PATH: PATH:MYSQL_HOME/bin”
让修改的profile文件立即生效[root@bogon liuzhen]# source /etc/profile

[root@bogon liuzhen]# cd /data/serverl/mysql/
[root@bogon mysql]# cp support-files/mysql.server /etc/init.d/mysql
知识点:
/etc/init.d 是/etc/rc.d/init.d的链接,在/etc/init.d添加一个文件会同步在/etc/rc.d/init.d下添加一个相同文件

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接

–add : 加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。服务脚本必须存放在/etc/ini.d/目录下

让mysql服务加入到开机启动指令管理的服务列表中[root@bogon liuzhen]# chkconfig --add mysql
开机自启动mysql服务[root@bogon liuzhen]# chkconfig mysql on

初始化数据库:[root@bogon liuzhen]# mysqladmin -u root password
New password:
Confirm new password:
[root@bogon liuzhen]#连接到mysql
[root@bogon mysql]# mysql -u root -p
Enter password:
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(‘123’) where User=‘root’;
mysql>select Host,User,Password from user where User=‘root’;
mysql>flush privileges; //刷新权限
mysql>exit //退出

以下其余四个GRANT例子
给来自192.168.155.1的用户user1分配可对数据库dbname的tablename表进行SELECT,INSERT,UPDATE,DELETE,CREATE,DROP等操作的权限,并设定密码为123456。
对表操作权限还有好多如ALTER等
mysql>GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON dbname.tablename TO ‘user1’@‘192.168.155.1’ IDENTIFIED BY ‘123456’;#给来自192.168.155.1的用户user2分配可对数据库dbname所有表进行所有操作的权限,并设定口令为123456。
mysql>GRANT ALL PRIVILEGES ON dbname.
TO ‘user2’@‘192.168.155.1’ IDENTIFIED BY ‘123456’;#给来自192.168.155.1的用户user3分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123456。
mysql>GRANT ALL PRIVILEGES ON . TO ‘user3’@‘192.168.155.1’ IDENTIFIED BY ‘123456’;给本机用户user4分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123456。
mysql>GRANT ALL PRIVILEGES ON . TO ‘user4’@‘localhost’ IDENTIFIED BY ‘123456’;开启防火墙mysql3306端口的外部访问

**关于*错误:ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)**的解决方案:systemctl stop mysql
vim /etc/my.cnf添加如下语句:skip-grant-tables
systemctl restart mysql
mysql -u root -p输入密码登录
use mysql
GRANT ALL PRIVILEGES ON . TO root@"%" IDENTIFIED BY “root”;

这个时候会报一个错误:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
我们只需要刷新一下权限即可flush privileges; //刷新权限
GRANT ALL PRIVILEGES ON . TO root@"%" IDENTIFIED BY “root”;//给root远程控制的权限,这里可以不用

mysql>update user set Password = password(‘123’) where User=‘root’;
mysql>select Host,User,Password from user where User=‘root’;
mysql>flush privileges; //刷新权限
mysql>exit //退出
systemctl restart mysql;
mysql -u root -p输入密码再次登录mysql即可。

mysql 用户表中多个host时的匹配规则:可以使用“%”,表示所有的网段;也可以使用具体的ip地址,表示只有该ip的客户端才可以登录到mysql服务器;也可以使用“_”进行模糊匹配,表示某个网段的客户端可以登录到mysql服务器。
mysql采用的策略是:当服务器读取user表时,它首先以最具体的Host值排序(主机名和IP号是最具体的) 。有相同Host值的条目首先以最具体的User匹配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水到渠成~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值