使用yum安装mysql

一、安装之前

安装mysql的各种依赖包,如果要使用清华镜像安装依赖,请点击下方链接 清华镜像 https://mirrors.tuna.tsinghua.edu.cn/help/mysql/

  1. #1.安装依赖
  2. wget https://repo.mysql.com//mysql80-community-release-el8-1.noarch.rpm
  3. rpm -ivh mysql80-community-release-el8-1.noarch.rpm
  4. #查找之前有没有安装过依赖
  5. 方式1:(推荐):
  6. rpm -qa | grep mysql #查询安装包是否安装
  7. #如果你系统有安装,那可以选择进行卸载
  8. rpm -e <安装过的rpm> #普通删除模式
  9. rpm -e --nodeps <mysql安装过的rpm> #强力删除模式,提示有依赖的其它文件,则用该命令强力删除
  10. 方式2
  11. whereis mysql && which mysql && find / -name mysql #查询所有Mysql对应的文件与目录
  12. rm -rf /usr/bin/mysql /usr/include/mysql #删除有关与mysql的包

二、下载解压编译安装

  1. 2.1 获取安装依赖资源
  2. yum -y install mysql-server
  3. 2.2 安装后后查看与修改权限 (8.0版本以上可以不初始化)
  4. ll /var/lib/mysql | grep mysql
  5. mkdir -p /data/mysql
  6. mkdir -p /var/lib/mysql/
  7. chown -R mysql:mysql /data/mysql
  8. chown -R mysql:mysql /var/lib/mysql
  9. sudo chmod -R 777 /var/lib/mysql/
  10. #初始化mysql (8.0版本以上可以不初始化)
  11. mysqld --initialize

注意:如果我们是第一次启动 mysql 服务,mysql服务器首先会进行初始化的配置

三、启动

  1. #3.设置mysqld启动与开机启动(可以暂缓到步骤五之后做)
  2. systemctl start mysqld && systemctl enable mysqld.service
  3. #或 sudo service mysqld start && chkconfig mysqld on
  4. sudo systemctl start mysqld
  5. #或 service nginx mysqld
  6. #重启
  7. sudo systemctl restart mysqld
  8. #或 service mysqld restart
  9. #开机启动
  10. sudo systemctl enable mysqld
  11. #或 sudo service mysqld star
  12. #关闭开机启动
  13. sudo systemctl disable mysqld
  14. #或 sudo chkconfig mysqld off

四、防火墙设置

  1. 4.防火墙开放端口
  2. # netstat -anp #哪些端口被打开
  3. # netstat -lnp | grep 3306 #执行开放端口号时候可以看看那些端口在运行
  4. systemctl restart firewalld
  5. firewall-cmd --zone=public --add-port=80/tcp --permanent
  6. firewall-cmd --zone=public --add-port=7001/tcp --permanent
  7. firewall-cmd --zone=public --add-port=8080/tcp --permanent
  8. firewall-cmd --zone=public --add-port=8888/tcp --permanent
  9. firewall-cmd --zone=public --add-port=3306/tcp --permanent
  10. systemctl restart firewalld #注意:重启防火墙,80端口是必须要开放的

五、配置my.cnf文件

  1. 编辑配置文件vim /etc/my.cnf,编辑完成后重新启动 systemctl restart mysqld ```shell [mysqld] bind-address=0.0.0.0 port=3306 user=mysql

    basedir=/usr/local/mysql

    datadir=/data/mysql

    log-error=/data/mysql/mysql.err

    pid-file=/data/mysql/mysql.pid

    character_set_server=utf8mb4

    symbolic-links=0

    socket=/var/lib/mysql/mysql.sock

    socket=/tmp/mysql.sock

    character config

此组由客户端和服务器同时读取,用它来选择影响一切的选项

[client-server]

包括配置目录中的所有文件

!includedir /etc/my.cnf.d

  1. <a name="unMwk"></a>
  2. #### 六、设置用户密码与远程访问
  3. ```shell
  4. #6.1 启动和登录
  5. systemctl restart mysqld && systemctl enable mysqld.service
  6. mysql -uroot
  7. #查看用户权限管理
  8. select Host,User from mysql.user;
  9. #6.2 修改root用户主机
  10. update mysql.user set host ="%" where user = "root";
  11. flush privileges; #刷新权限
  12. #6.3 修改root用户密码
  13. alter user'root'@'%' IDENTIFIED BY 'Qwer@1234';
  14. #ALTER USER 'root'@'Qwer@1234' PASSWORD EXPIRE NEVER;
  15. flush privileges; #刷新权限
  16. exit

快速部署mysql

  1. wget https://repo.mysql.com//mysql80-community-release-el8-1.noarch.rpm
  2. rpm -ivh mysql80-community-release-el8-1.noarch.rpm
  3. yum -y install mysql-server
  4. mkdir -p /data/mysql
  5. mkdir -p /var/lib/mysql/
  6. chown -R mysql:mysql /data/mysql
  7. chown -R mysql:mysql /var/lib/mysql
  8. sudo chmod -R 777 /var/lib/mysql/
  9. systemctl restart firewalld
  10. firewall-cmd --zone=public --add-port=80/tcp --permanent
  11. firewall-cmd --zone=public --add-port=3306/tcp --permanent
  12. systemctl restart firewalld #注意:重启防火墙,80端口是必须要开放的
  13. systemctl start mysqld && systemctl enable mysqld.service
  14. #配置my.cnf文件 vim /etc/my.cnf

点击定位配置my.cnf文件的位置

查看

  1. #查看 MySQL 运行状态
  2. 方式1: ps aux | grep mysqld
  3. 方式2: systemctl status mysqld systemctl status mysqld.service
  4. 方式3: service mysqld status
  5. #验证 MySQL 安装
  6. mysqladmin --version
  7. #检查是否已经设置为开机启动MySQL服务
  8. systemctl list-unit-files|grep mysqld
  9. #查询/etc/init.d/下是否存在mysql
  10. ll /etc/init.d/ | grep mysql
  11. #查询mysql.server
  12. find / -name mysql.server
  13. #查询mysql的日志在哪里
  14. find / -name mysqld.log
  15. #查看启动项的服务列表
  16. systemctl list-unit-files --type=service | grep enabled

关闭与卸载

  1. 第一步:查看 mysql 是否在运行,如果在运行则先关闭
  2. 方式1: kill -9 <pid进程>
  3. 方式2: sudo pkill mysql
  4. 方式3: suto systemctl stop mysqld
  5. 方式4: service mysqld stop
  6. 第二步:移除redis
  7. yum -y remove mysql

安装包模式

安装之前

  1. #切换到root用户,首先执行检查一下是否有已安装的与MySQL相关的东西
  2. rpm -qa | grep -i mysql
  3. #如果有,使用以下命令进行强制卸载
  4. rpm -e --nodeps <mysql安装过的rpm>

一、安装

  1. #1.1 下载 mysql 安装包
  2. wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
  3. #1.2 解压 mysql 安装包并且把它移动到/usr/local中去
  4. tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
  5. mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql && mv mysql /usr/local

二、创建数据、分组权限、配置修改

  1. #2.3 设置分组
  2. groupadd mysql
  3. useradd -r -g mysql mysql
  4. #2.4 创建数据目录与分组权限
  5. mkdir -p /data/mysql
  6. mkdir -p /var/lib/mysql/
  7. mkdir -p /var/log/mariadb
  8. touch /var/log/mariadb/mariadb.log
  9. touch /etc/my.cnf
  10. chown mysql:mysql -R /data/mysql
  11. chown -R mysql:mysql /var/log/mariadb/
  12. chmod 644 /etc/my.cnf
  13. chmod -R 777 /var/lib/mysql/

初始化

  1. 6.初始化
  2. /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql/ --user=mysql --initialize
  3. 7.mysql.server复制到 /etc/init.d/mysql去,可以使用 service打开服务
  4. cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
  5. 8.创建软连接
  6. ln -s /usr/local/mysql/bin/mysql /usr/bin #使用 mysql -uroot连接命令
  7. ln -s /var/lib/mysql/mysql.sock /tmp #解决 Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
  8. 9.重启mysql
  9. service mysql restart
  10. 10.获取初始化的密码
  11. vim /data/mysql/mysql.err

启动可能遇到的问题: Failed to start mysql.service: Unit not found. 解决方案: mysql.server复制到 /etc/init.d/mysql去

重设密码

  1. 1.设置密码
  2. 方式一: set password for root@localhost = password('123456');
  3. 方式二: update mysql.user set password=password("123456") where user="root";
  4. 方式三: update mysql.user set authentication_string=password("123456") where user="root";
  5. 2.刷新权限
  6. flush privileges

查看

  1. #查询/etc/init.d/下是否存在mysql
  2. ll /etc/init.d/ | grep mysql
  3. 查询mysql.server
  4. find / -name mysql.server

安装MariaDB

MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品

安装之前

  1. #切换到root用户,首先执行检查一下是否有已安装的与MySQL相关的东西
  2. rpm -qa | grep -i mysql
  3. #如果有,使用以下命令进行强制卸载
  4. rpm -e --nodeps <mysql安装过的rpm>

安装

  1. 1.安装
  2. yum -y install mariadb mariadb-server

启动

  1. 2.启动MariaDB与开机启动
  2. systemctl start mariadb && systemctl enable mariadb
  3. #启动MariaDB
  4. systemctl start mariadb
  5. service mariadb start
  6. #设置开机启动
  7. systemctl enable mariadb
  8. #重启MariaDB
  9. systemctl restart mariadb

查看

  1. #查看 MySQL 运行状态
  2. 方式1: ps aux |grep mysqld
  3. 方式2: systemctl status mysqld systemctl status mysqld.service
  4. 方式3: service mysqld status
  5. #验证 MySQL 安装
  6. mysqladmin --version
  7. #检查是否已经设置为开机启动MySQL服务
  8. systemctl list-unit-files|grep mysqld
  9. #您可以使用以下命令检查mysql是否正在运行
  10. mysqladmin -u root -p status

配置MariaDB

  1. 3.执行 mysql_secure_installation 进行相关配置
  2. #首先是设置密码,会提示先输入密码:
  3. Enter current password for root (enter for none):<–初次运行直接回车
  4. #设置密码
  5. Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
  6. New password: <– 设置root用户的密码
  7. Re-enter new password: <– 再输入一次你设置的密码
  8. #其它配置
  9. Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车
  10. Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车,
  11. Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车
  12. Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车

设置远程访问

  1. 1.修改
  2. #select Host,User from mysql.user; #查看用户权限管理
  3. update mysql.user set host ="%" where user = "root"; #修改root用户主机
  4. alter user'root'@'%' IDENTIFIED BY 'Qwer@1234'; #修改root用户密码
  5. 2.开启端口
  6. netstat -lnp|grep 3306 #执行开放端口号时候可以看看那些端口在运行
  7. netstat -anp #哪些端口被打开
  8. systemctl restart firewalld
  9. firewall-cmd --zone=public --add-port=80/tcp --permanent
  10. firewall-cmd --zone=public --add-port=3306/tcp --permanent
  11. systemctl restart firewalld #注意:重启防火墙,80端口是必须要开放的
  12. 3.远程连接
  13. mysql -h 119.23.72.172 -uroot -pQwer@1234

配置MariaDB的字符集

  1. # vim /etc/my.cnf ,在[mysqld]中添加
  2. init_connect='SET collation_connection = utf8_unicode_ci'
  3. init_connect='SET NAMES utf8'
  4. character-set-server=utf8
  5. collation-server=utf8_unicode_ci
  6. skip-character-set-client-handshake
  7. # vim /etc/my.cnf.d/client.cnf ,在[client]中添加
  8. default-character-set=utf8
  9. # vim /etc/my.cnf.d/mysql-clients.cnf,在[mysql]中添加
  10. default-character-set=utf8
  11. #全部保存后,进入到MariaDB控制台,查看字符集
  12. show variables like "%character%";show variables like "%collation%";
  13. #全部显示UTF-8则配置成功

MariaDB远程连接详情进入到MariaDB控制台

1.执行如下语句建立用户并赋予所有操作权限。

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

参数 说明
username 将要创建的用户名
host 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
password 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

2.给用户赋予远程登录权限

GRANT privileges ON databasename.tablename TO 'username'@'host'

参数 说明
privileges 用户的操作权限,如SELECT , INSERT , UPDATE 等(权限列表见文末)。如果要授予所的权限则使用ALL
databasename 数据库名
tablename 表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*

3.刷新配置权限使其生效
  1. FLUSH PRIVILEGES
  2. flush privileges

此时即可通过ip远程访问主机上的MariaDB了,若仍不能访问,可进行以下检查:

  • 查看vim /etc/my.cnf,如skip-networkingbind-address(或bindaddress)被配置,则需要将这两个参数注释掉。
    • skip-networking 这个参数,会导致所有TCP/IP端口没有被监听,也就是说除了本机,其他客户端都无法用网络连接到本MariaDB服务器。
    • 而bind-address这个参数是指定哪些ip地址被配置,使得MariaDB服务器只回应哪些ip地址的请求
  • 如果仍然不能访问,则有可能是防火墙的原因。在shell下执行 /etc/init.d/iptables stop 关闭防火墙。

附:MariaDB操作权限

权限 描述
ALTER Allows use of ALTER TABLE
ALTER ROUTINE Alters or drops stored routines
CREATE Allows user of CREATE TABLE
CREATE ROUTINE Creates stored routines
CREATE TEMPORARY TABLE Allows user of CREATE TEMPORARY TABLE
CREATE USER Allows use ofCREATE USER,DROP USER,RENAME USER, and REVOKE ALL PRIVILEGES
CREATE VIEW Allows use of CREATE VIEW
DELETE Allows use of DELETE
DROP Allows use of DROP TABLE
EXECUTE Allows the user to run stored routines
FILE Allows use of SELECT...INTO OUTFILE and LOAD DATA INFILE
INDEX Allows use of CREATE INDEX and DROP INDEX
INSERT Allows use of INSERT
LOCK TABLES Allows use of LOCK TABLES on tables for which the user also has SELECT privileges
PROCESS Allows use of `SHOW FULL PROCESSLIST
RELOAD Allows use of FLUSH
REPLICATION Allows the user to ask where slave or master
CLIENT servers are
REPLICATION SLAVE Needed for replication slaves
SELECT Allows use of SELECT
SHOW DATABASES Allows use of SHOW DATABASE
SHOW VIEW Allows use of SHOW CREATE VIEW
SHUTDOWN Allows use of mysqladmin shutdown
SUPER Allows use of CHANGE MASTER,KILL,PURGE MASTER LOGS,andSET GLOBAL SQL statements. Allowsmysqladmin debug command.Allows one extra connection to be made if maximum connections are reached.
UPDATE Allows use of UPDATE
USAGE Allows connection without any specific privileges

关闭与卸载

  1. 第一步:查看 mariadb 是否在运行,如果在运行则先关闭
  2. 方式1: kill -9 <pid进程>
  3. 方式2: sudo pkill mariadb
  4. 方式3: systemctl stop mariadb
  5. 方式4: service mariadb stop
  6. 第二步:移除redis
  7. yum -y remove mariadb

登录连接远程

  1. mysql -h 119.23.72.172 -uroot -pQwer@1234

解决出错问题

Job for mysqld.service failed because the control process exited with error code. See “systemctl status mysqld.service” and “journalctl -xe” for details.

输入命令 service mariadb status , 比如是这个样子:

  1. systemd[1]: Starting MariaDB database server...
  2. mysqld_safe[2155]: 160127 17:01:08 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
  3. mysqld_safe[2155]: 160127 17:01:08 mysqld_safe Starting mysqld daemon with databases from...mysql
  4. systemd[1]: mariadb.service: control process exited, code=exited status=1
  5. systemd[1]: Failed to start MariaDB database server.
  6. systemd[1]: Unit mariadb.service entered failed state.
  7. systemd[1]: mariadb.service failed.
  1. 删除文件: rm -f /var/lib/mysql/ib_logfile
  2. 删除所有mysql、mariadb安装包然后重新安装mariadb

chown: changing ownership of ‘/var/lib/mysql’: Operation not permitted failed to start mariadb 10.1 database server

  • 发现是权限不够,首先检查防火墙是否开启,发现防火墙没有开
  • 删除原先mysql相关的服务 进程 配置文件 ```shell rm -rf /etc/my.cnf rm -rf /var/lib/mysql/* rpm -qa |grep mysql

chown -R mysql:mysql /var/lib/mysql

sudo mysql_install_db —datadir=/home/mysql —user=root —defaults-file=/etc/my.cnf.d/openstack.cnf systemctl start mariadb

systemctl status mariadb.service

chmod 777 /etc/keystone/keystone.conf ```

Lost connection to MySQL server at ‘reading initial communication packet’, system

  • 意思是“读取初始通信包”时与MySQL服务器的连接断开,因为系统设置系统,设置防火墙参考

Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

或许没有启动mysql服务,启动一下服务就好了