- yum安装mysql">使用yum安装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
- 此组由客户端和服务器同时读取,用它来选择影响一切的选项
- 包括配置目录中的所有文件
- !includedir /etc/my.cnf.d
- 安装包模式
- 安装MariaDB
- 登录连接远程
- 解决出错问题
- Job for mysqld.service failed because the control process exited with error code. See “systemctl status mysqld.service” and “journalctl -xe” for details.
- chown: changing ownership of ‘/var/lib/mysql’: Operation not permitted failed to start mariadb 10.1 database server
- Lost connection to MySQL server at ‘reading initial communication packet’, system
- Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
使用yum安装mysql
一、安装之前
安装mysql的各种依赖包,如果要使用清华镜像安装依赖,请点击下方链接 清华镜像 https://mirrors.tuna.tsinghua.edu.cn/help/mysql/
#1.安装依赖
wget https://repo.mysql.com//mysql80-community-release-el8-1.noarch.rpm
rpm -ivh mysql80-community-release-el8-1.noarch.rpm
#查找之前有没有安装过依赖
方式1:(推荐):
rpm -qa | grep mysql #查询安装包是否安装
#如果你系统有安装,那可以选择进行卸载
rpm -e <安装过的rpm> #普通删除模式
rpm -e --nodeps <mysql安装过的rpm> #强力删除模式,提示有依赖的其它文件,则用该命令强力删除
方式2:
whereis mysql && which mysql && find / -name mysql #查询所有Mysql对应的文件与目录
rm -rf /usr/bin/mysql /usr/include/mysql #删除有关与mysql的包
二、下载解压编译安装
2.1 获取安装依赖资源
yum -y install mysql-server
2.2 安装后后查看与修改权限 (8.0版本以上可以不初始化)
ll /var/lib/mysql | grep mysql
mkdir -p /data/mysql
mkdir -p /var/lib/mysql/
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /var/lib/mysql
sudo chmod -R 777 /var/lib/mysql/
#初始化mysql (8.0版本以上可以不初始化)
mysqld --initialize
注意:如果我们是第一次启动 mysql 服务,mysql服务器首先会进行初始化的配置
三、启动
#3.设置mysqld启动与开机启动(可以暂缓到步骤五之后做)
systemctl start mysqld && systemctl enable mysqld.service
#或 sudo service mysqld start && chkconfig mysqld on
sudo systemctl start mysqld
#或 service nginx mysqld
#重启
sudo systemctl restart mysqld
#或 service mysqld restart
#开机启动
sudo systemctl enable mysqld
#或 sudo service mysqld star
#关闭开机启动
sudo systemctl disable mysqld
#或 sudo chkconfig mysqld off
四、防火墙设置
4.防火墙开放端口
# netstat -anp #哪些端口被打开
# netstat -lnp | grep 3306 #执行开放端口号时候可以看看那些端口在运行
systemctl restart firewalld
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
systemctl restart firewalld #注意:重启防火墙,80端口是必须要开放的
五、配置my.cnf文件
- 编辑配置文件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
<a name="unMwk"></a>
#### 六、设置用户密码与远程访问
```shell
#6.1 启动和登录
systemctl restart mysqld && systemctl enable mysqld.service
mysql -uroot
#查看用户权限管理
select Host,User from mysql.user;
#6.2 修改root用户主机
update mysql.user set host ="%" where user = "root";
flush privileges; #刷新权限
#6.3 修改root用户密码
alter user'root'@'%' IDENTIFIED BY 'Qwer@1234';
#ALTER USER 'root'@'Qwer@1234' PASSWORD EXPIRE NEVER;
flush privileges; #刷新权限
exit
快速部署mysql
wget https://repo.mysql.com//mysql80-community-release-el8-1.noarch.rpm
rpm -ivh mysql80-community-release-el8-1.noarch.rpm
yum -y install mysql-server
mkdir -p /data/mysql
mkdir -p /var/lib/mysql/
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /var/lib/mysql
sudo chmod -R 777 /var/lib/mysql/
systemctl restart firewalld
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
systemctl restart firewalld #注意:重启防火墙,80端口是必须要开放的
systemctl start mysqld && systemctl enable mysqld.service
#配置my.cnf文件 vim /etc/my.cnf
查看
#查看 MySQL 运行状态
方式1: ps aux | grep mysqld
方式2: systemctl status mysqld 或 systemctl status mysqld.service
方式3: service mysqld status
#验证 MySQL 安装
mysqladmin --version
#检查是否已经设置为开机启动MySQL服务
systemctl list-unit-files|grep mysqld
#查询/etc/init.d/下是否存在mysql
ll /etc/init.d/ | grep mysql
#查询mysql.server
find / -name mysql.server
#查询mysql的日志在哪里
find / -name mysqld.log
#查看启动项的服务列表
systemctl list-unit-files --type=service | grep enabled
关闭与卸载
第一步:查看 mysql 是否在运行,如果在运行则先关闭
方式1: kill -9 <pid进程>
方式2: sudo pkill mysql
方式3: suto systemctl stop mysqld
方式4: service mysqld stop
第二步:移除redis
yum -y remove mysql
安装包模式
安装之前
#切换到root用户,首先执行检查一下是否有已安装的与MySQL相关的东西
rpm -qa | grep -i mysql
#如果有,使用以下命令进行强制卸载
rpm -e --nodeps <mysql安装过的rpm>
一、安装
#1.1 下载 mysql 安装包
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
#1.2 解压 mysql 安装包并且把它移动到/usr/local中去
tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql && mv mysql /usr/local
二、创建数据、分组权限、配置修改
#2.3 设置分组
groupadd mysql
useradd -r -g mysql mysql
#2.4 创建数据目录与分组权限
mkdir -p /data/mysql
mkdir -p /var/lib/mysql/
mkdir -p /var/log/mariadb
touch /var/log/mariadb/mariadb.log
touch /etc/my.cnf
chown mysql:mysql -R /data/mysql
chown -R mysql:mysql /var/log/mariadb/
chmod 644 /etc/my.cnf
chmod -R 777 /var/lib/mysql/
初始化
6.初始化
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql/ --user=mysql --initialize
7.把mysql.server复制到 /etc/init.d/mysql去,可以使用 service打开服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
8.创建软连接
ln -s /usr/local/mysql/bin/mysql /usr/bin #使用 mysql -uroot连接命令
ln -s /var/lib/mysql/mysql.sock /tmp #解决 Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
9.重启mysql
service mysql restart
10.获取初始化的密码
vim /data/mysql/mysql.err
启动可能遇到的问题: Failed to start mysql.service: Unit not found. 解决方案: mysql.server复制到 /etc/init.d/mysql去
重设密码
1.设置密码
方式一: set password for root@localhost = password('123456');
方式二: update mysql.user set password=password("123456") where user="root";
方式三: update mysql.user set authentication_string=password("123456") where user="root";
2.刷新权限
flush privileges
查看
#查询/etc/init.d/下是否存在mysql
ll /etc/init.d/ | grep mysql
查询mysql.server
find / -name mysql.server
安装MariaDB
MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品
安装之前
#切换到root用户,首先执行检查一下是否有已安装的与MySQL相关的东西
rpm -qa | grep -i mysql
#如果有,使用以下命令进行强制卸载
rpm -e --nodeps <mysql安装过的rpm>
安装
1.安装
yum -y install mariadb mariadb-server
启动
2.启动MariaDB与开机启动
systemctl start mariadb && systemctl enable mariadb
#启动MariaDB
systemctl start mariadb
service mariadb start
#设置开机启动
systemctl enable mariadb
#重启MariaDB
systemctl restart mariadb
查看
#查看 MySQL 运行状态
方式1: ps aux |grep mysqld
方式2: systemctl status mysqld 或 systemctl status mysqld.service
方式3: service mysqld status
#验证 MySQL 安装
mysqladmin --version
#检查是否已经设置为开机启动MySQL服务
systemctl list-unit-files|grep mysqld
#您可以使用以下命令检查mysql是否正在运行
mysqladmin -u root -p status
配置MariaDB
3.执行 mysql_secure_installation 进行相关配置
#首先是设置密码,会提示先输入密码:
Enter current password for root (enter for none):<–初次运行直接回车
#设置密码
Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码
#其它配置
Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车
Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车,
Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车
Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车
设置远程访问
1.修改
#select Host,User from mysql.user; #查看用户权限管理
update mysql.user set host ="%" where user = "root"; #修改root用户主机
alter user'root'@'%' IDENTIFIED BY 'Qwer@1234'; #修改root用户密码
2.开启端口
netstat -lnp|grep 3306 #执行开放端口号时候可以看看那些端口在运行
netstat -anp #哪些端口被打开
systemctl restart firewalld
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
systemctl restart firewalld #注意:重启防火墙,80端口是必须要开放的
3.远程连接
mysql -h 119.23.72.172 -uroot -pQwer@1234
配置MariaDB的字符集
# vim /etc/my.cnf ,在[mysqld]中添加
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
# vim /etc/my.cnf.d/client.cnf ,在[client]中添加
default-character-set=utf8
# vim /etc/my.cnf.d/mysql-clients.cnf,在[mysql]中添加
default-character-set=utf8
#全部保存后,进入到MariaDB控制台,查看字符集
show variables like "%character%";show variables like "%collation%";
#全部显示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.刷新配置权限使其生效
FLUSH PRIVILEGES
flush privileges
此时即可通过ip远程访问主机上的MariaDB了,若仍不能访问,可进行以下检查:
- 查看vim /etc/my.cnf,如skip-networking、bind-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 |
关闭与卸载
第一步:查看 mariadb 是否在运行,如果在运行则先关闭
方式1: kill -9 <pid进程>
方式2: sudo pkill mariadb
方式3: systemctl stop mariadb
方式4: service mariadb stop
第二步:移除redis
yum -y remove mariadb
登录连接远程
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 , 比如是这个样子:
systemd[1]: Starting MariaDB database server...
mysqld_safe[2155]: 160127 17:01:08 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
mysqld_safe[2155]: 160127 17:01:08 mysqld_safe Starting mysqld daemon with databases from...mysql
systemd[1]: mariadb.service: control process exited, code=exited status=1
systemd[1]: Failed to start MariaDB database server.
systemd[1]: Unit mariadb.service entered failed state.
systemd[1]: mariadb.service failed.
- 删除文件: rm -f /var/lib/mysql/ib_logfile
- 删除所有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服务,启动一下服务就好了