Linux源码安装MySQL
第一步:环境检查
1.1 查询系统自带的数据库
代码如下:
$ rpm -qa|grep mariadb
1.2 卸载系统自带的Mariadb
若没有系统自带的Mariadb就不用卸载!
代码如下:
$ rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
1.3 删除默认配置文件
删除etc目录下的my.cnf文件,代码如下:
$ rm /etc/my.cnf
1.4 检查mysql及用户组
相关步骤代码如下:
检查mysql是否存在,返回值为空则不存在,如若存在就需要卸载存在的MySQL,卸载方法(如果是新系统一般情况下不存在
$ rpm -qa | grep mysql
检查mysql用户组、用户是否存在,不存在则创建
# 检查mysql用户组
$ cat /etc/group | grep mysql
# 检查mysql用户
$ cat /etc/passwd | grep mysql
如果mysql是存在的,这里可以删除mysql用户组mysql用户在重新创建,也可不删除,像我有强迫症的就把它删除了,重新进行了创建,删除方法如下:
# 查询mysql用户组
$ id mysql
# 删除
$ userdel mysql
1.5 添加mysql用户组及用户
# 添加mysql用户组
$ groupadd mysql
# 添加mysql用户到mysql用户组
$ useradd -g mysql mysql
第二章:下载源码并安装
2.1 下载mysql.tar.gz源码包并且解压
解压代码如下:
$ tar -zxvf mysql-5.7.25-el7-x86_64.tar.gz
2.2 创建mysql安装目录
在usr/local目录下创建mysql安装目录(这里的目录可以自己选择,任意位置都可以,推荐local目录,代码如下
$ mkdir /usr/local/mysql
移动解压后的mysql文件到usr/local/mysql目录里,代码如下
# 我在/usr/usrfiles下解压的
$ mv /usr/usrfiles/mysql-5.5.62-linux-glibc2.12-x86_64/* /usr/local/mysql/
2.3 创建mysql数据/日志目录
创建mysql的data目录,代码如下
$ mkdir /usr/local/mysql/data
创建mysql的log目录 ,代码如下
$ mkdir /usr/local/mysql/log
进入已经创建好的log目录,创建mysqld.log文件,代码如下
$ touch /usr/local/mysql/log/mysqld.log
更改文件拥有者为mysql ,代码如下
# -R参数为递归的意思
$ chown -R mysql /usr/local/mysql/
更改文件所属用户组为mysql ,代码如下:
$ chgrp -R mysql /usr/local/mysql/
第三章:安装mysql
3.1 进入mysql安装目录,安装mysql,代码如下
$ /usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
安装这里会出现报错,但是没关系,忽略它的存在,报错原因:mysl5.7版本以后更改了源码安装方式中的mysql_install_db,但是经过我的测试,以前的方法还是可以用的
3.2 创建mysql配置文件
新建配置文件my.cnf,代码如下
# 新建my.cnf
$ vi /etc/my.cnf
# 赋予my.cnf这个文件777权限,777代表这个文件组用户,用户,其他用户都有权限
$ chown 777 /etc/my.cnf
my.cnf配置文件内容如下:
[mysqld]
##这里为mysql安装目录
basedir=/usr/local/mysql/
##这里为mysql的数据源目录
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
symbolic-links=0
lower_case_table_names=1
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=innodb
max_allowed_packet=16m
[client]
port=3306
[mysqld_safe]
log-error=/usr/local/mysql/log/mysqld.log
3.3 mysql设置环境变量
编辑/etc/profile文件 ,代码如下
$ vi /etc/profile
添加代码
# 这里为你的mysql安装目录
$ export MYSQL_HOME="/usr/local/mysql/"
$ export PATH="$PATH:$MYSQL_HOME/bin"
使配置生效,代码如下:
$ source /etc/profile
3.4 设置Mysql为系统服务
进入/usr/lib/systemd/system
目录,代码如下
$ cd /usr/lib/systemd/system/
在LInux系统中,如果要把某项服务设置为系统服务,都在这个目录内新建相应的service文件
新建mysql.service系统服务文件,文件内容如下
[Unit]
Description=mysql
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
# 这里要换成自己安装mysql的目录
ExecStart=/usr/local/mysql/support-files/mysql.server start
# 这里要换成自己安装mysql的目录
ExecReload=/usr/local/mysql/support-files/mysql.server restart
# 这里要换成自己安装mysql的目录
ExecStop=/usr/local/mysql/support-files/mysql.server stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
到此为止
我们已经成功把mysql加入到了系统服务中,可以很方便的管理mysql服务了
刷新系统服务
systemctl daemon-reload
代码如下:
启动mysql服务
$ systemctl start mysql.service
设置开机启动
$ systemctl enable mysql.service
取消开机启动
$ systemctl disable mysql.service
查看服务状态
$ systemctl status mysql.service
第四章 设置mysql常用配置
现在我们启动mysql,并设置一些常用的配置,具体步骤如下
4.1 修改密码
获取初始密码,代码如下:
$ cat /root/.mysql_secret
修改密码,代码如下:
$ mysql -uroot -p # 登录mysql用刚才获取到的初始密码
$ mysql> set PASSWORD = PASSWORD('123456'); # 修改密码
$ mysql> flush privileges; # 刷新权限
4.2 允许远程访问
代码如下:
温馨提示:需要在登录Mysql时才可执行允许远程访问的代码
$ mysql> create user 'root'@'%' identified by '123456';
$ mysql> flush privileges; # 刷新权限
这句话的意思如下
mysql> create user '你想要哪个用户可以远程访问'远程访问的ip'%' identified by '你的数据库密码';
mysql> create user 'username'@'host' identified by 'password'
username – 你将创建的用户名
host – 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,
如果想让该用户可以从任意远程主机登陆,可以使用通配符%
password –该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
取消该用户的远程访问权限
# 取消授权远程访问操作如下:
mysql> use mysql;
mysql> revoke from 'root'@'%';
mysql> flush privileges;
mysql>revoke from '你想要移除远程权限的用户名'@'%';
mysql> revoke from 'username'@'%';
username – 你将创建的用户名
host – 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,
通配符%,代表该用户拥有的权限
使用mysql命令进入mysql,mysql -uroot -p,然后输入密码
授权远程访问操作如下三步:
$ use mysql;
# 这里的两个星号,第一个代表任意数据库,第二个代表该数据库的任意表,
$ grant all privileges on *.* to 'root'@'%' identified by 'password';
$ flush privileges;
4.3 删除远程访问权限
取消授权远程访问操作如下:
$ use mysql;
$ revoke all privileges on *.* from 'root'@'%';
$ flush privileges;
删除远程访问用户的第二种办法
mysql -u root -p # 登录mysql
use mysql;
select host,user from user; # 查看用户命令
update user set host = "localhost" where user = "root" and host= "%";
或者使用 delete from user where user="root" and host="%" ;
flush privileges;
4.4 关于mysql的用户的详细命令
新建用户
查看用户命令
select user, host from mysql.user;
创建用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
username:用户名;host:指定在哪个主机上可以登录,本机可用localhost,
%通配所有远程主机;password:用户登录密码;
-------------------------------------------------------------------------
添加远程访问权限
mysql数据库设置用户远程连接权限
grant all privileges on *.* to 'root'@'%' identified by '你的密码' with grant option;
-------------------------------------------------------------------------
创建数据库
CREATE DATABASE 库名;
授予用户在本地服务器对该数据库的全部权限
grant all privileges on dbname.* to zhrt@localhost identified by '123456';
设置用户testuser,只拥有【查询】操作权限;
grant select on *.* to testuser@localhost identified by "123456" WITH GRANT OPTION;
授予用户通过外网IP对于该数据库的全部权限
grant all privileges on dbname.* to 'zhrt'@'%' identified by '123456';
刷新权限
FLUSH PRIVILEGES;
关闭远程访问
如已有root用户使用localhost可设置为127.0.0.1
update user set host = "localhost" where user = "root" and host= "%";
或者
delete from user where user="root" and host="%" ;
退出mysql
exit;
关闭/启动/重启 mysql
service mysql stop
service mysql start
service mysql restart
查看当前用户: SELECT CURRENT_USER();
查看某个用户的权限:show grants for 'root'@'%';
撤销用户权限:
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名
tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
设置完mysql需要重启服务