mysql 卸载

1.如果已安装成功 则需要卸载前请先关闭Mysql服务 命令:service mysql stop

2.使用 rpm 命令的方式查看已安装的mysql 命令:rpm -qa|grep mysql
在这里插入图片描述

3.使用yum安装的Mysql需要先进行清除 命令:yum remove mysql mysql-server mysql-libs mysql-server
在这里插入图片描述

4.再次查询是否有剩余文件 命令:rpm -qa|grep mysql

在这里插入图片描述

5.使用过rpm -ev +对应文件名 删除剩余文件 命令:

rpm -ev mysql80-community-release-el7-1.noarch
rpm -ev mysql-community-client-plugins-8.0.25-1.el7.x86_64
rpm -ev mysql-community-common-8.0.25-1.el7.x86_64
在这里插入图片描述

6.查询是否还存在Mysql相关遗漏文件(有则使用对应删除命令删除)
在这里插入图片描述

mysql 安装

1.下载mysql

mysql官网:https://dev.mysql.com/downloads/mysql/

在这里插入图片描述

将下载的mysql上传打linux

2.解压并重命名

[root@rsyncClient local]# tar -zxvf mysql-8.0.18-el7-x86_64.tar.gz -C /usr/local/ 

[root@rsyncClient local]# mv mysql-8.0.18-el7-x86_64/ mysql

3.在mysql根目录下创建data目录,存放数据

[root@rsyncClientopt]# cd /usr/local/mysql/
[root@rsyncClient mysql]# mkdir data

4.创建mysql用户组和mysql用户

[root@rsyncClient local]# groupadd mysql

[root@rsyncClient local]# useradd -g mysql mysql

5.改变mysql目录权限

[root@rsyncClient local]# chown -R mysql.mysql /usr/local/mysql/

6.初始化数据库

[root@iZbp1iwvf9mlryt1ml8tdrZ mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data  --lower-case-table-names=1

在这里插入图片描述

7.配置mysql

在mysql/support-files创建文件my-default.cnf

[root@rsyncClient support-files]# cd /usr/local/mysql/support-files/
[root@rsyncClient support-files]# touch my-default.cnf

复制配置文件到/etc/my.cnf

[root@rsyncClient support-files]# cp -a ./my-default.cnf /etc/my.cnf 
cp: overwrite ‘/etc/my.cnf’? y

编辑my.cnf

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
user=mysql
socket=/tmp/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

8.配置环境变量

编辑 / etc/profile 文件

[root@rsyncClient mysql]# vim /etc/profile
#配置mysql环境变量
PATH=/data/mysql/bin:/data/mysql/lib:$PATH
export PATH
#让其生效
[root@rsyncClient mysql]# source /etc/profile
#看环境变量是否生效
[root@rsyncClient mysql]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

9.启动mysql

[root@rsyncClient mysql]# systemctl start mysqld

启动失败报错1:

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

解决方案:

[root@rsyncClient ~]# chown mysql:mysql -R /usr/local/mysql/
启动失败报错2:

[root@rsyncClient mysql]# service mysql start
/etc/init.d/mysql: ./bin/my_print_defaults: /lib/ld-linux.so.2: bad ELF interpreter: No such file or 
directory  Starting MySQL. ERROR! The server quit without 
updating PID file (/var/lib/mysql/rsyncClient.pid).
去这个目录下面查看 cat/usr/local/mysql/data/rsyncClient.err错误,对应的的解决,这里错误是因为my.conf配置错误

启动失败报错3:

mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file:
 No such file or directory
[root@rsyncClient init.d]# yum install libncurses.so.5
以这个为例,如果缺少这样依赖,直接用yum安装

启动失败报错4:

[root@rsyncClient data]# mysql -uroot -p
Enter password: 
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: 
/usr/lib/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
身份验证插件不能加载

解决办法:

[root@rsyncClient lib]# vim /etc/my.cnf
在这个[mysqld]下添加一行:
default_authentication_plugin=mysql_native_password
如果忘记了密码在加上:
skip-grant-tables(跳过密码验证)等设置了密码就去掉

10. 使用systemctl命令启动关闭mysql服务

启动mysql服务:

#systemctl start mysqld.service

停止mysql服务

#systemctl stop mysqld.service

重启mysql服务

#systemctl restart mysqld.service

查看mysql服务当前状态

#systemctl status mysqld.service

设置mysql服务开机自启动

#systemctl enable mysqld.service

停止mysql服务开机自启动

#systemctl disable mysqld.service

11.mysql的基本操作

使用mysql客户端连接mysql

/usr/local/mysql/bin/mysql -u root -p password
修改mysql的默认初始化密码
alter user’root’@‘localhost’ identified by’root’;

创建用户 CREATE USER ‘用户名称’@‘主机名称’ IDENTIFIED BY ‘用户密码’

create user ‘yehui’@‘localhost’ identified by ‘yehui’;
#给所有远程登录的进行授权,此方式已经报错了
grant all privileges on . to ‘root’@‘%’ identified by ‘root’ with grant option;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘identified by ‘root’ with grant option’ at line 1

修改root用户可以远程连接

update user set Host=‘%’ where User=‘root’;

授予权限 grant 权限 on 数据库.表 to ‘用户名’@‘登录主机’ [IDENTIFIED BY ‘用户密码’];

grant replication slave on . to’yehui’@‘localhost’;
#刷新
flush privileges;
#权限问题可以参考https://www.cnblogs.com/php-linux/p/11561300.html
复制代码
12.防火墙问题

[root@rsyncClient data]# firewall-cmd --permanent --zone=public --add-port=3306/tcp #允许访问
success
[root@rsyncClient data]# firewall-cmd --reload #重新加载
success
[root@rsyncClient data]# firewall-cmd --permanent --zone=public --query-port=3306/tcp #查看是否开通访问权限
yes

doker 安装mysql8 并开启不区分大小写

如果要指定版本,使用下面的命令

$ docker pull mysql:8.0.16

创建数据目录和配置文件

在宿主机创建放置mysql的配置文件的目录和数据目录,并且进行授权

$ mkdir -p /usr/mysql/conf /usr/mysql/data

$ chmod -R 755 /usr/mysql/

创建配置文件

在上面创建的配置文件目录/usr/mysql/conf下创建MySQL的配置文件my.cnf

$ vim /usr/mysql/conf/my.cnf

添加以下内容到上述创建的配置文件中

[client]

#socket = /usr/mysql/mysqld.sock

default-character-set = utf8mb4

[mysqld]

#pid-file        = /var/run/mysqld/mysqld.pid

#socket          = /var/run/mysqld/mysqld.sock

#datadir         = /var/lib/mysql

#socket = /usr/mysql/mysqld.sock

#pid-file = /usr/mysql/mysqld.pid
lower_case_table_names=1

datadir = /usr/mysql/data

character_set_server = utf8mb4

collation_server = utf8mb4_bin

secure-file-priv= NULL

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Custom config should go here

!includedir /etc/mysql/conf.d/

启动创建容器

$ docker run --restart=unless-stopped -d --name mysql -v /usr/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /usr/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.16

参数解释:
-v : 挂载宿主机目录和 docker容器中的目录,前面是宿主机目录,后面是容器内部目录

-d : 后台运行容器

-p 映射容器端口号和宿主机端口号

-e 环境参数,MYSQL_ROOT_PASSWORD设置root用户的密码

执行上述命令后,执行查询容器的命令就可以看到创建的mysql容器

$ docker ps -a

结果如下所示:

img

问题

上述虽然安装好了mysql,但是使用远程的Navicat连接时提示错误,不能正确连接mysql,此时需要修改按照下面说的步骤修改一下mysql的密码模式以及主机等内容才可以。

修改mysql密码以及可访问主机

  • 进入容器内部
$ docker exec -it mysql /bin/bash
  • 连接mysql
$ mysql -uroot -p
  • 使用mysql库
$ mysql> use mysql
  • 修改访问主机以及密码等,设置为所有主机可访问
$ mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';

如果执行失败修改user表中的Host: update user set Host=‘%’ where User=‘root’;   
说明: % 代表任意的客户端,可替换成具体IP地址。再执行上面SQL;

注意:

mysql_native_password,mysql8.x版本必须使用这种模式,否则navicate无法正确连接

  • 刷新
$ mysql> flush privileges

经过以上步骤,再次远程使用Navicat连接数据库时就可以正常连接了。

查看是否区别大小写:show VARIABLES like ‘%low%’ 已生效
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐