- 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.rpmrpm -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-server2.2 安装后后查看与修改权限 (8.0版本以上可以不初始化)ll /var/lib/mysql | grep mysqlmkdir -p /data/mysqlmkdir -p /var/lib/mysql/chown -R mysql:mysql /data/mysqlchown -R mysql:mysql /var/lib/mysqlsudo 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 onsudo 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 firewalldfirewall-cmd --zone=public --add-port=80/tcp --permanentfirewall-cmd --zone=public --add-port=7001/tcp --permanentfirewall-cmd --zone=public --add-port=8080/tcp --permanentfirewall-cmd --zone=public --add-port=8888/tcp --permanentfirewall-cmd --zone=public --add-port=3306/tcp --permanentsystemctl 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.servicemysql -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.rpmrpm -ivh mysql80-community-release-el8-1.noarch.rpmyum -y install mysql-servermkdir -p /data/mysqlmkdir -p /var/lib/mysql/chown -R mysql:mysql /data/mysqlchown -R mysql:mysql /var/lib/mysqlsudo chmod -R 777 /var/lib/mysql/systemctl restart firewalldfirewall-cmd --zone=public --add-port=80/tcp --permanentfirewall-cmd --zone=public --add-port=3306/tcp --permanentsystemctl 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/下是否存在mysqlll /etc/init.d/ | grep mysql#查询mysql.serverfind / -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第二步:移除redisyum -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.gzmv mysql-5.7.26-linux-glibc2.12-x86_64 mysql && mv mysql /usr/local
二、创建数据、分组权限、配置修改
#2.3 设置分组groupadd mysqluseradd -r -g mysql mysql#2.4 创建数据目录与分组权限mkdir -p /data/mysqlmkdir -p /var/lib/mysql/mkdir -p /var/log/mariadbtouch /var/log/mariadb/mariadb.logtouch /etc/my.cnfchown mysql:mysql -R /data/mysqlchown -R mysql:mysql /var/log/mariadb/chmod 644 /etc/my.cnfchmod -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 --initialize7.把mysql.server复制到 /etc/init.d/mysql去,可以使用 service打开服务cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql8.创建软连接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.重启mysqlservice mysql restart10.获取初始化的密码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/下是否存在mysqlll /etc/init.d/ | grep mysql查询mysql.serverfind / -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#启动MariaDBsystemctl start mariadbservice mariadb start#设置开机启动systemctl enable mariadb#重启MariaDBsystemctl 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 firewalldfirewall-cmd --zone=public --add-port=80/tcp --permanentfirewall-cmd --zone=public --add-port=3306/tcp --permanentsystemctl 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=utf8collation-server=utf8_unicode_ciskip-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 PRIVILEGESflush 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第二步:移除redisyum -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...mysqlsystemd[1]: mariadb.service: control process exited, code=exited status=1systemd[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服务,启动一下服务就好了
