Linux下MySQL的安装和使用
目录
4.3.5、给mysql目录指定专有用户和用户组... 10
1、MySQL的简介
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下产品,MySQL已经被Oracle收购。
2、MySQL的特点
MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言,MySQL软件采用了双授权政策,分为社区版和商业版,由于体积小,速度快,总体拥有成本低,尤其是开发源码这一特点,一般中小型网站的开发都选择MySQL作为网站的数据库。
3、MySQL的下载
3.1、MySQL的源码tar包下载
centos7中默认没有mysql-server的rpm包,源码安装时需要自行下载mysql的源码到自己的系统中。
MySQL的官网地址:https://www.mysql.com/
进入MySQL的首页
点击download进入下载页面
点击社区版Community (GPL) Downloads,进入社区版下载页
点击download,进入版本选择页
点击Archived versions进入历史版本存档页
选择MySQL Community Server,点击进入
选择好版本,选择.tar或者.tar.gz的都可以,如果是服务器不要选择test版本的。.tar包中包含有mysql-test的.tar.gz包和mysql-server的.tar.gz包,所以直接下载mysql-server的.tar.gz包,点击download,复制下载链接,此处下载的是mysql的源码。
地址为:https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
3.2、MySQL的yum源下载
centos7中默认没有mysql-server的rpm包,所以需要yum源安装需要自行先下载你yum源到自己的系统上进行安装以后,自己的主机上才会有mysql-server的yum源。
MySQL的官网地址:https://www.mysql.com/
进入MySQL的首页
点击download进入下载页面
点击社区版Community (GPL) Downloads,进入社区版下载页
点击MySQL Yum Repository,进入版本选择页
点击Download
点击No thanks, just start my download,进行下载
复制下载链接,此处下载的是mysql-server的yum源
地址为:https://repo.mysql.com//mysql80-community-release-fc27-1.noarch.rpm
4、Linux下MySQL源码安装步骤
4.1、检查是否安装MySQL
命令:rpm -qa|grep mysql-server
[[email protected] ~]# rpm -qa|grep mysql
MySQL的默认配置文件在/etc/my.cnf
如果已安装过MySQL,是否进行升级,由需求而定。
4.2、检查是否安装Mariadb
Centos7将默认数据库mysql替换成了Mariadb
检查mariadb命令:rpm -qa|grep mariadb
卸载mariadb命令:rpm -e --nodeps mariadb
删除/etc/目录下的my.cnf文件:rm -rf /etc/my.cnf
存在就删除。
4.3、下载
获取需要安装的mysql的版本下载链接https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
进入目录/usr/local/src/进行下载
[[email protected] src]# wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
4.3、安装步骤
4.3.1、安装支持库libaio
[[email protected] mysql]# yum install libaio
4.3.2、解压缩mysql的.tar.gz包
解压缩命令为:tar -zxvf 文件名 -C 目标目录
[[email protected] src]# tar -zxvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
解压到/usr/local/目录下
4.3.3、更改解压文件名称,
修改mysql的解压名称。
[[email protected] local]# mv mysql-5.7.23-linux-glibc2.12-x86_64 mysql
4.3.4、创建用户组和用户
创建用户组:[[email protected] local]# groupadd mysql
指定mysql组创建mysql用户:[[email protected] local]# useradd -r -g mysql mysql
-r表示系统用户,-s表示设置shell,这里表示禁用
为了安全性,给mysql数据库创建专有用户,该用户只能访问mysql目录,不能访问系统其它目录
4.3.5、给mysql目录指定专有用户和用户组
首先创建data目录:
[[email protected] local]# cd /usr/local/mysql
[[email protected] local]# mkdir data
指定用户和用户组:
[[email protected] local]# cd /usr/local
[[email protected] local]# chown -R mysql mysql/
[[email protected] local]# chgrp -R mysql mysql/
-R包含目录下所有和目录和文件
4.3.6、初始化mysql
进入mysql的解压目录下,初始化mysql
[[email protected] local]# cd /usr/local/mysql/bin
[[email protected] local]#./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US
一定要记住生成的临时密码,该密码用于登录的临时密码,上图中的临时密码为K9sbgdrkhp%h
注:每次安装的临时密码都是不一样的。
如果忘记密码或者想重新初始化,可以先将mysql/data目录中文件删除,然后再执行初始化命令
4.3.7、新建配置文件my.cnf
在 etc 下新建配置文件my.cnf,从5.7.17后mysql就没有默认的my_default.cnf文件,需要手动创建
[[email protected] local]# cd /etc
[[email protected] etc]# vi my.cnf
输入配置:
[mysqld] basedir = /usr/local/mysql/ datadir = /usr/local/mysql/data port = 3306 character-set-server = utf8 explicit_defaults_for_timestamp = true |
输入完成,:wq保存退出。
4.3.8、关于中文乱码问题
MySQL服务器字符集,默认情况下所采用的字符集为:
character-set-server和default-character-set
(1)在5.1版本时,为了解决中文乱码问题,my.ini内[mysql]和[mysqld]中都写:
default-character-set=utf8
(2)在5.5版本,[mysql]内可以写default-character-set=utf8,而[mysqld]中却不能这样写了,只能写成character-set-server=utf8
4.4、启动mysql
进入mysql的解压目录,执行启动命令
[[email protected] etc]# cd /usr/local/mysql/bin
[[email protected] bin]# ./mysqld_safe --user=mysql &
完成如上图,直接回车
4.5、自启动配置
进入mysql解压目录下的support-files目录下,将mysql.server文件复制到/etc/init.d/mysql目录,并对该文件进行编辑
[[email protected] bin]# cd /usr/local/mysql/support-files/
[[email protected] support-files]# cp mysql.server /etc/init.d/mysql
[[email protected] support-files]# vi /etc/init.d/mysql
将mysql目录填上:
basedir=/usr/local/mysql/ datadir=/usr/local/mysql/data/ |
:wq保存退出
添加mysql文件的执行权限:
[[email protected] support-files]# chmod +x /etc/init.d/mysql
添加系统服务:
[[email protected] support-files]# chkconfig --add mysql
查看mysql的自启状态:
执行chkconfig --list mysql查看(如果2到5位的启用状态为开(on)状态即OK)
[[email protected] bin]# chkconfig --list mysql
注:如果2到5位的启用状态有关闭的需要先执行chkconfig mysql on开启,在执行chkconfig --list mysql查询启用状态。
4.6、service启动命令
重启服务:service mysql restart
[[email protected] support-files]# service mysql restatus
停止服务:service mysql stop
[[email protected] support-files]# service mysql stop
启动服务:service mysql start
[[email protected] support-files]# service mysql start
查看服务:service mysql status
[[email protected] support-files]# service mysql status
4.7、防火墙配置
防火墙的配置分为firewalld和iptables,根据系统环境二选一。
4.7.1、firewalld配置
查看所有firewalld开通的所有端口
[[email protected] ~]# firewall-cmd --zone=public --list-ports
添加3306端口
[[email protected] ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
(--permanent永久生效,没有此参数重启后失效)
重新载入
[[email protected] ~]# firewall-cmd --reload
再次查看所有firewalld开通的所有端口
开通成功。
关闭: systemctl stop firewalld
启动: systemctl start firewalld
查看状态: systemctl status firewalld
4.7.2、iptables的配置
(1)编辑防火墙文件
命令:vi /etc/sysconfig/iptables
(2)添加防火墙规则
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT |
(3):wq保存退出
(4)重启防火墙
命令:service iptables restart
5、修改root密码
进入mysql的解压目录下,登录mysql修改root密码
[[email protected] support-files]# cd /usr/local/mysql/bin
[[email protected] bin]# ./mysql -u root -p
登录:./mysql -u root -p 输入临时密码在之前记下的密码
输入密码,登录成功
修改密码:set password=password("mysql");此处的password("mysql")是mysql的内置函数,其中mysql是自己设置的root账户的密码
修改成功
退出登录重新连接,测试修改密码
退出:exit
重新登录
[[email protected] bin]# ./mysql -u root -p
输入修改过后的密码
登录完成,密码修改成功。
6、mysql赋予root远程登录授权
如果远程采用第三方工具navicat或sqlyog等工具进行root账户登录时,需要指定mysql服务器上的mysql数据库下的user表中的root账户的host。
(1)在服务器上登录mysql数据库
进入mysql安装目录
[[email protected] ~]# cd /usr/local/mysql/bin/
登录mysql数据库
[[email protected] bin]# ./mysql -u root -p
输入root账户密码,登录成功
查询mysql数据库下的user表中的用户(user)和链接主机(host)
mysql> select user,host from mysql.user;
修改root账户的host为任何主机(’%’)都可登录
mysql> update mysql.user set host='%' where user='root' and host='localhost';
注:这里的%表示任何主机都可采用root账户登录,此处的%可以修改为指定的ip主机,如果指定了IP主机后,只能通过指定的主机才能才用root账户登录。
使修改生效:flush privileges;
再次查询mysql数据库下的user表中的用户(user)和链接主机(host),验证是否修改成功。
mysql> select user,host from mysql.user;
修改成功。
7、验证远程root账户登录mysql
在Linux下执行ifconfig查看运行MySQL服务器的ip地址
此时可以通过MySQL的客户端工具进行连接(比如Navicat等)
(1)新建连接
(2)点击Test Connection,测试链接,如图则验证成功
关闭弹窗,点击OK,远程连接成功,进入数据库。
8、Linux下MySQL配置用户
8.1、查看目前mysql的用户
select user,host from mysql.user;
8.2、删除MySQL的匿名用户
(1)查看是否有匿名用户
命令:select user,host from mysql.user;
(2)删除匿名用户
命令:delete from mysql.user where user=’’;
(3)再次查看用户
命令:select user,host from mysql.user;
8.3、插入MySQL新的用户
命令:
insert into mysql.user(Host,User,Password) values(“localhost”,”yourusername”,password(“yourpassword”)) |
注意:mysql.user表的字段名首字母需要大写,添加的密码要使用mysql的内置函数
password(“yourpassword”)
使操作生效
命令:flush privileges
9、Linux下创建新的database
命令:
CREATE DATABASE `testdatabase` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; |
10、单独赋予database本地登录权限
给本地用户赋予所有权限
命令:
grant all privileges on testdatabase.* to yourusername @localhost identified by ‘yourpassword’; |
注意:testdatabase.*表示创建的testdatabase数据库下的所有表,yourusername表示用户名,@localhost表示本地的,yourpassword表示该用户名的密码。
使操作生效
命令:flush privileges
11、单独赋予database外网登录权限
给账号开通外网所有权限
命令:
grant all privileges on testdatabase.* to ‘yourusername’ @’%’ identified by ‘yourpassword’; |
注意:testdatabase.*表示创建的testdatabase数据库下的所有表,’yourusername’表示用户名,此处的用户名是有单引号的,@’%’表示不限制ip(也就是不限制ip开通所有权限),yourpassword表示该用户名的密码。
指定ip开通权限
grant all privileges on testdatabase.* to yourusername @’172.17.180.112’ identified by ‘yourpassword’; |
注意:testdatabase.*表示创建的testdatabase数据库下的所有表,yourusername表示用户名,@’%’表示指定ip为172.17.180.112开通权限(该账户只能通过这个ip才能过进行增改查testdatabase数据库下的所有表),yourpassword表示该用户名的密码。
使操作生效
命令:flush privileges
12、MySQL常用术语
(1)dql 表示select(查询)
(2)dml 表示insert(插入)、update(修改)、delete(删除)
(3)ddl 表示create table(操作表)、create view
(4)dcl 表示grant(赋予权限)