centos7环境使用mysql离线安装包安装mysql5.7
服务器环境:centos7 x64
需要安装mysql5.7+
一、卸载CentOS7系统自带mariadb
# 查看系统自带的Mariadb [root@CDH-141 ~]# rpm -qa|grep mariadb mariadb-libs-5.5.44-2.el7.centos.x86_64
# 麒麟服务器系统
[root@Kylin-Host-V10 ~]# rpm -qa|grep -i mysql
mysql-5.1.73-8.el6_8.ns6.01.x86_64
mysql-devel-5.1.73-8.el6_8.ns6.01.x86_64
mysql-libs-5.1.73-8.el6_8.ns6.01.x86_64
# 卸载系统自带的Mariadb(rpm -ev --nodeps)
[root@CDH-141 ~]# rpm -ev --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
# 删除etc目录下的my.cnf
[root@CDH-141 ~]# rm /etc/my.cnf
# 查找出mysql对应的目录 find / -name mysql # 删除对应的mysql目录
rm -rf ***
上面查出来的名字,
删除完后再次执行find / -name mysql进行确认
二、检查mysql是否存在
# 检查mysql是否存在
[root@CDH-141 ~]# rpm -qa | grep mysql
[root@CDH-141 ~]#
三、查看用户和组是否存在
1)检查mysql组合用户是否存在
# 检查mysql组和用户是否存在,如无则创建
[root@CDH-141 ~]# cat /etc/group | grep mysql
[root@CDH-141 ~]# cat /etc/passwd | grep mysql
# 查询全部用户(只是做记录,没必要执行)
2)若不存在,则创建mysql组和用户# 创建mysql用户组
# 创建mysql用户组
[root@CDH-141 ~]# groupadd mysql
# 创建一个用户名为mysql的用户,并加入mysql用户组
[root@CDH-141 ~]# useradd -g mysql mysql
注:mysql用户正常情况下只用于mysql程序初始化和启动,因此,为安全考虑可禁用Centos的mysql用户ssh登陆权限。
# 制定password 为111111 (用户mysql的密码) [root@CDH-141 ~]# passwd mysql
Changing password for user mysql. New password: BAD PASSWORD: The password is a palindrome Retype new password: passwd: all authentication tokens updated successfully.
四、下载mysql离线安装包tar文件
官网下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
版本选择,可以选择一下两种方式:
1)使用Red Hat Enterprise Linux
Select Version:5.7.35
Select Operating System:Red Hat Enterprise Linux / Oracle Linux
Select OS Version:Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit)
列表中下载:
Compressed TAR Archive:(mysql-5.7.35-el7-x86_64.tar.gz)
2)使用Linux - Generic
Select Version:5.7.35
Select Operating System:Linux - Generic
Select OS Version:Linux - Generic (glibc 2.12) (x86, 64-bit)
列表中下载:
Compressed TAR Archive:(mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz)【本文中使用的是这个版本】
注意:上边两种方式找mysql离线安装包的方式都可以。
五、上传第四步下载的mysql TAR包
# 进入/usr/local/文件夹 [root@CDH-141 ~]# cd /usr/local/
# 上传mysql TAR包 [root@CDH-141 local]# rz
# 解压mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz [root@CDH-141 local]# mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
注:用tar -zxvf 进行解压可能会报错,改成tar -xvf
bin full-path-to-mysql-VERSION-OS include lib64 mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz share etc games lib libexec sbin src [root@CDH-141 local]# tar -zxvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz mysql-5.7.25-lin ... mysql-5.7.25-linux-glibc2.12-x86_64/share/install_rewriter.sql mysql-5.7.25-linux-glibc2.12-x86_64/share/uninstall_rewriter.sql mysql-5.7.25-linux-glibc2.12-x86_64/support-files/magic mysql-5.7.25-linux-glibc2.12-x86_64/support-files/mysql.server mysql-5.7.25-linux-glibc2.12-x86_64/docs/INFO_BIN mysql-5.7.25-linux-glibc2.12-x86_64/docs/INFO_SRC [root@CDH-141 local]# ls bin full-path-to-mysql-VERSION-OS include lib64 mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz share etc games lib libexec mysql-5.7.25-linux-glibc2.12-x86_64 sbin src
# 进入/usr/local下,修改为mysql [root@CDH-141 local]# mv mysql-5.7.35-linux-glibc2.12-x86_64 mysql
[root@CDH-141 local]# ls bin etc full-path-to-mysql-VERSION-OS games include lib lib64 libexec mysql mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz sbin share src
六、更改所属的组和用户
更改mysql 目录下所有文件夹所属的用户组和用户,以及权限
[root@CDH-141 ~]# cd /usr/local/
## 将 `/usr/local/mysql` 目录及其内容的所有者和所属组都设置为 "mysql" 用户和 "mysql" 组 [root@CDH-141 local]# chown -R mysql:mysql /usr/local/mysql
## 设置目录权限 [root@CDH-141 local]# chmod -R 755 /usr/local/mysql [root@CDH-141 local]# cd mysql/ [root@CDH-141 mysql]# mkdir data [root@CDH-141 mysql]# chown -R mysql:mysql data
另外需要:
mkdir -p /usr/local/mysql/log
chmod -R 755 /usr/local/mysql/log
说明:
`chmod` 命令用于更改文件或目录的权限。在给定的命中,
`chmod -R 755 /usr/local/mysql` 用于将 `/usr/local/mysql` 目录其内容的权限设置为755。
权限是用于控制文件和目录的访问级别和操作权限的属性。
755 是一个三位数字权限模式,分为三个部分:所有者(Owner)、所属组(Group)和其他用户(Others)的权限。
755 权限模式意味着:
- 所有者(Owner)有读、写和执行权限(7:读+写+执行)
- 所属组(Group)有读和执行权限(5:读+执行)
- 其他用户(Others)有读和执行权限(5:读+执行)
这样设置权限可以确保 MySQL 目录及其内容对所有者具有完全控制权限,
对所属组和其他用户具有适当的读和执行权限,以便使 MySQL 服务和其他需要访问这些文件的进程能够正常地读取、执行和操作它们。
参数说明:
chown -R mysql:mysql ./
chown [选项]... [所有者][:[组]] 文件...
必要参数:
-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
-deference 作用于符号链接的指向,而不是链接文件本身
选择参数:
--reference=<目录或文件> 把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组
--from=<当前用户:当前群组> 只有当前用户和群组跟指定的用户和群组相同时才进行改变
--help 显示帮助信息
--version 显示版本信息
默认路径
# MySQL 的安装目录 basedir=/usr/local/mysql # MySQL 的数据目录 datadir=/var/lib/mysql # 错误日志文件 log-error=/var/log/mysqld.log # 进程 ID 文件 pid-file=/var/run/mysqld/mysqld.pid
七、创建my.cnf文件
mysql启动时默认的配置文件为 /etc/my.cnf,当然你可以在启动命令后使用参数 --defaults-file 来使用自定义的配置文件,如放在/usr/local/mysql/下面。
自定义配置文件配置项时,需手动创建对应的文件/文件夹,
例如:datadir=/usr/local/mysql/data ,需先在 /mysql/下创建 data 文件夹
首先删除/etc目录下的mysql旧的配置文件(可能有也可能没有)。然后新建一个配置文件。命令如下:
rm /etc/my.cnf vi /etc/my.cnf
配置文件中的配置内容如下:
[root@CDH-141 ~]# cd /etc/
# 创建my.cnf文件 [root@CDH-141 mysql]# touch my.cnf # 或者 cd ''>my.conf 或者 my.ini
[root@CDH-141 mysql]# chmod 644 my.cnf
# 编辑my.cnf [root@CDH-141 etc]# vi my.conf
注意:
1.在最新的 MySQL 版本中,不再使用 `default-character-set` 这个变量来设置字符集,而是使用 `character-set-server` 进行设置。
- 打开 MySQL 配置文件,路径可能是 `/etc/my.cnf` 或 `/etc/mysql/mysql.conf.d/mysqld.cnf`。
- 在 `[mysqld]` 部分中查找 `default-character-set=utf8` 这一行。
- 将这一行改为 `character-set-server=utf8`。
- 保存文件并退出编辑器。
- 重新尝试运行 `mysql_secure_installation` 命令。
添加配置信息(路径自定义配)
[client] port=3306 # 设置mysql客户端默认字符集 default-character-set=utf8 # 指定MySQL客户端用来与MySQL服务器通信的本地socket文件的位置。当使用UNIX域套接字连接MySQL时,这个选项是必需的 socket=/var/lib/mysql/mysql.sock
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
# 指定MySQL服务器监听的端口号。默认情况下,MySQL服务器监听端口3306。
port=3306
# 指定MySQL服务器使用的UNIX域套接字文件的位置。客户端可以通过这个socket文件连接到服务器。
socket=/var/lib/mysql/mysql.sock
[mysqld]
port=3306
# 指定MySQL服务器使用的UNIX域套接字文件的位置。客户端可以通过这个socket文件连接到服务器。
socket=/var/lib/mysql/mysql.sock
# MySQL 的安装目录 basedir=/usr/local/mysql # MySQL 的数据目录 datadir=/usr/local/mysql/data # 错误日志文件 log-error=/usr/local/mysql/log/mysqld.log # 进程 ID 文件 pid-file=/usr/local/mysql/pid/mysqld.pid # 最大连接数 max_connections=1000 # 允许的最大包大小 max_allowed_packet=16M # 打开表缓存的大小 table_open_cache=256 # 排序缓冲区大小 sort_buffer_size=256K # 索引缓存大小 key_buffer_size=8M # InnoDB 使用缓冲池来缓存数据和索引,以提高读写性能。但是,这也意味着更多的内存消耗。 innodb_buffer_pool_size=5G # InnoDB 使用日志文件来记录所有的修改操作,以支持崩溃恢复。但是,这也意味着更大的磁盘空间消耗。 innodb_log_file_size=5G # 默认存储引擎 default-storage-engine=InnoDB # 设置服务器ID server-id=1
八、初始化MySQL
1.初始化
初始化和设置 MySQL 数据库和文件的所有者及所属组。
# 进入mysql [root@CDH-141 local]# cd /usr/local/mysql/bin
# 安装mysql [root@CDH-141 mysql]# mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
或者自定义密码:
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
./mysqld =/etc/my.cnf --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
指定配置文件:
./mysqld --defaults-file=/usr/local/mysql/my.cnf --initialize --user=fairy --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
./mysqld --defaults-file=/usr/local/mysql/my.cnf --initialize --user=fairy --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --log-error=/usr/local/mysql/log/mysqld.log --verbose
5.7版本以后:
mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
8.0版本:
建议使用`mysqld --initialize-insecure`命令
## 过程:
2019-03-08 18:11:07 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2019-03-08 18:11:24 [WARNING] The bootstrap log isn't empty:
2019-03-08 18:11:24 [WARNING] 2019-03-08T10:11:07.208602Z 0 [Warning] --bootstrap is deprecated. Please consider using --initialize instead
参数说明:
--initialize:打印错误日志、随机密码
--initialize-insecure:初始化参数,可以对密码进行定制,也就意味着初始化过程中,不会生成一个随机的初始密码。
--user=mysql :管理mysql的用户
--basedir=/usr/local/mysql:软件存放目录
--datadir=/usr/local/mysql/data:数剧存放目录
--defaults-file:指定配置文件所在位置
注意:初始化时,会出现如下问题,是因为缺少依赖包,直接 安装一个即可 yum install -y libaio-devel(注意网络是否连接)
1. `scripts/mysql_install_db --user=mysql`:这个命令是用来初始化 MySQL 数据库的。它会在 MySQL 数据目录中创建必要的系统表和文件,以及一些默认的配置文件。`--user=mysql` 参数指定了在初始化过程中使用 "mysql" 用户来执行这些操作。
2. `chown -R mysql.`:在 MySQL 数据目录中执行这个命令,将目录及其所有内容的所有者设置为 "root" 用户。这通常是为了确保在数据库初始化之后,对这些文件的访问权限仅限于管理员。
3. `chown -R mysql data`:这个命令将 MySQL 数据目录中的 "data" 子目录及其内容的所有者设置为 "mysql" 用户。这个目录通常存储实际的数据库文件,将其所有者设置为 "mysql" 用户,以确保 MySQL 进程有权限读取和写入这些文件。
综合起来,这些命令的目的是在安装过程中初始化 MySQL 数据库、设置文件的所有者和所属组,以确保 MySQL 服务能够正常运行,并且只有管理员和 MySQL 进程能够访问和操作相应的文件和目录。
2.开机启动配置
[root@CDH-141 mysql]# ls bin COPYING data docs include lib man my.cnf README share support-files
[root@CDH-141 mysql]# ls -l total 60 drwxr-xr-x 2 root root 4096 Mar 8 15:56 bin -rw-r--r-- 1 7161 31415 17987 Dec 21 18:39 COPYING drwxr-x--- 5 mysql mysql 4096 Mar 8 16:21 data drwxr-xr-x 2 root root 4096 Mar 8 15:56 docs drwxr-xr-x 3 root root 4096 Mar 8 15:56 include drwxr-xr-x 5 root root 4096 Mar 8 15:56 lib drwxr-xr-x 4 root root 4096 Mar 8 15:56 man -rw-r--r-- 1 777 root 516 Mar 8 16:19 my.cnf -rw-r--r-- 1 7161 31415 2478 Dec 21 18:39 README drwxr-xr-x 28 root root 4096 Mar 8 15:56 share drwxr-xr-x 2 root root 4096 Mar 8 15:56 support-files [root@CDH-141 mysql]# chmod +x /etc/init.d/mysqld [root@CDH-141 mysql]# [root@CDH-141 mysql]# mkdir data [root@CDH-141 mysql]# [root@CDH-141 mysql]# chown -R mysql:mysql data [root@CDH-141 mysql]#
`cp ./support-files/mysql.server /etc/init.d/mysqld` 这个命令的作用是将 MySQL 的服务启动脚本复制到 `/etc/init.d/` 目录下,并将其重命名为 `mysqld`。
在此命令中,`./support-files/mysql.server` 是 MySQL 安装目录下的服务启动脚本文件的路径。该脚本文件是用于启动、停止和重新启动 MySQL 服务的。
通过将该脚本复制到 `/etc/init.d/` 目录下,并重命名为 `mysqld`,可以将 MySQL 的服务启动脚本添加到系统的启动项中,使得系统启动时可以自动启动 MySQL 服务。
一旦完成这个复制和重命名的过程,您就可以使用以下命令来管理 MySQL 服务:
- 启动 MySQL 服务:`service mysqld start`
- 停止 MySQL 服务:`service mysqld stop`
- 重新启动 MySQL 服务:`service mysqld restart`
请注意,`mysqld` 在不同的系统中可能会有一些差异,具体命名可能会稍有不同。这取决于您的系统和 MySQL 的安装方式。
九、启动mysql
[root@CDH-141 mysql]# /etc/init.d/mysqld restart
# 若开机启动没设置成功,用以下命令:
sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &
MySQL server PID file could not be found![FAILED] Starting MySQL.Logging to '/usr/local/mysql/data/CDH-141.err'. ..The server quit without updating PID file (/usr/local/mysql/data/CDH-141.pid).[FAILED] [root@CDH-141 mysql]#
出现错误,解决方案如下:
#找到是否已经有进程占用 [root@CDH-141 mysql]# ps aux|grep mysql root 32483 0.0 0.0 113252 1620 pts/0 S 18:04 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/CDH-141.pid mysql 32684 0.1 0.1 1119892 178224 pts/0 Sl 18:04 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=CDH-141.err --pid-file=/usr/local/mysql/data/CDH-141.pid --port=3323 root 35137 0.0 0.0 112648 944 pts/0 S+ 18:12 0:00 grep --color=auto mysql #关闭进程 [root@CDH-141 mysql]# kill -9 32684 [root@CDH-141 mysql]# /usr/local/mysql/bin/mysqld_safe: line 198: 32684 Killed nohup /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=CDH-141.err --pid-file=/usr/local/mysql/data/CDH-141.pid --port=3323 < /dev/null > /dev/null 2>&1 #确认是否还占用 [root@CDH-141 mysql]# ps aux|grep mysql root 35501 0.0 0.0 112644 948 pts/0 S+ 18:13 0:00 grep --color=auto mysql [root@CDH-141 mysql]# /etc/init.d/mysqld restart MySQL server PID file could not be found![FAILED] Starting MySQL..[ OK ] [root@CDH-141 mysql]# # 重启mysql [root@CDH-141 mysql]# /etc/init.d/mysqld restart Shutting down MySQL..[ OK ] Starting MySQL..[ OK ] [root@CDH-141 mysql]# 在Linux<CentOS>服务器上安装Mysql,由于Centos自身的yum源中用Mysql的分支Mariadb代替了MySQL,所以不得不选择rpm或tar.gz包的方式安装, 但是为了以后在其他LInux如Ubuntu中也能熟练安装MySQL,所以推荐使用tar.gz
运行命令:service mysqld start 出现如下错误: Starting MySQL.Logging to '/usr/mysql/mysql-5.7.35/data/localhost.localdomain.err'. 2021-08-13T01:01:52.896471Z mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists. ERROR! The server quit without updating PID file (/usr/mysql/mysql-5.7.35/data/localhost.localdomain.pid). 执行命令:cat /usr/local/mysql/data/localhost.localdomain.err查看错误原因 error内容如下: [ERROR] Can't start server : Bind on unix socket: Permission denied [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ? 结合先前写入配置/etc/my.cnf: 由上不难理解—— 第一: mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists. “var/lib/mysql”目录不存在,首要先创建: mkdir /var/lib/mysql 第二: Mysql客户端和服务器端是通过初始化mysql.sock 文件来进行通信,所以服务器在启动时需要写入该文件,因此该文件所存放的目录必须双方都 具有访问权限。而异常日志中表示: [ERROR] Can't start server : Bind on unix socket: Permission denied 所以,MySQL服务不具备目录 /var/lib/mysql 的写入权限,无法生成mysql.sock文件,自然服务启动时无法找到该文件。 给目录 /var/lib/mysql 付予写入权限或者最大权限 chmod 777 /var/lib/mysql 最终: ———————————————— 版权声明:本文为CSDN博主「公众号:流花鬼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_32331073/article/details/76229420
十、设置开机启动
[root@CDH-141 mysql]# chkconfig --level 35 mysqld on [root@CDH-141 mysql]# chkconfig --list mysqldsystemctl enable mysqld
systemctl start mysqld
Note: This output shows SysV services only and does not include native systemd services. SysV configuration data might be overridden by native systemd configuration. If you want to list systemd services use 'systemctl list-unit-files'. To see services enabled on particular target use 'systemctl list-dependencies [target]'. mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@CDH-141 mysql]# chmod +x /etc/rc.d/init.d/mysqld [root@CDH-141 mysql]# chkconfig --add mysqld [root@CDH-141 mysql]# chkconfig --list mysqld Note: This output shows SysV services only and does not include native systemd services. SysV configuration data might be overridden by native systemd configuration. If you want to list systemd services use 'systemctl list-unit-files'. To see services enabled on particular target use 'systemctl list-dependencies [target]'. mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@CDH-141 mysql]# service mysqld status MySQL running (26122)[ OK ] [root@CDH-141 mysql]#
注:
关闭mysql
service mysqld stop
重启mysql
service mysqld restart
十一、修改配置文件
将MySQL的bin目录添加到系统的PATH环境变量中
[root@CDH-141 mysql]# vim /etc/profile
修改/etc/profile,在最后添加如下内容
# 修改/etc/profile文件
#set mysql environment
export PATH=$PATH:/usr/local/mysql/bin
# 使文件生效
[root@CDH-141 mysql]# source /etc/profile
十二、获得mysql初始密码
1)获得mysql初始密码
[root@CDH-141 mysql]# cat /root/.mysql_secret
# Password set for user 'root@localhost' at 2019-03-08 17:40:42 poc3u0mO_luv [root@CDH-141 mysql]#
-w=DdwO1fdze
也可以在日志中找
2)修改密码
Enter password: #此处填写上边获取到的初始密码‘poc3u0mO_luv’ Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.25 Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. set PASSWORD = PASSWORD('123456'); Query OK, 0 rows affected, 1 warning (0.00 sec) flush privileges; Query OK, 0 rows affected (0.00 sec) exit Bye
备注:
修改密码时报错:
Can't connect to local MySQL server through socket '/tmp/mysql.sock'
上述提示可能在启动mysql时遇到,即在/tmp/mysql.sock位置找不到所需要的mysql.sock文件,主要是由于my.cnf文件里对mysql.sock的位置设定导致。
mysql.sock默认的是在/var/lib/mysql, 如果发现确实是在该目录下,可以在[mysqld]下面加入mysql.sock的path
vi /etc/my.cnf(my.cnf也可能在其他路径下)
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
但是要保证使用mysql的用户具有对该目录的写权限,否则这样的改动由于权限限制仍然会报错。
所以为了避免权限问题也可以使用软链接为/var/lib/mysql/mysql.sock创建一个到/tmp/mysql.sock的联接
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
由于/tmp/文件夹默认对other有w权限,这样就可以避免权限问题。
此外,如果发现mysql.sock不在默认的/var/lib/mysql位置,一种解决方法是使用find命令搜索mysql.sock的位置,然后按前面两种解决方案挑一种做即可。
————————————————
版权声明:本文为CSDN博主「rush 2」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_33026067/article/details/113219372
输入密码报错解决方法:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor
跳过MySQL的密码认证过程,方法如下:
vim /etc/my.cnf (注:windows下修改的是my.ini)
在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程,如下图所示:
保存文档并退出
重启MySQL:
service mysqld restart
4.重启之后输入:
mysql
修改root的密码
mysql> update user set password=password("你的新密码") where user="root"; mysql> flush privileges; mysql> quit
# mysql数据库下已经没有password这个字段了,password字段改成了authentication_string
mysql> update mysql.user set authentication_string=PASSWORD('password') where User='root';
Query OK, 1 row affected, 1 warning (0.15 sec)
Rows matched: 1 Changed: 1 Warnings: 1
mysql> flush privileges;
mysql> quit
到这里root账户就已经重置成新的密码了。
编辑my.cnf
去掉刚才添加的内容,然后重启MySQL。
vim /etc/my.cnf
另一种方法:
1. 关闭MySQL服务器。 在命令行或终端中执行以下命令关闭MySQL服务器: ```bash sudo service mysqld stop ``` 2. 启动MySQL服务器并跳过授权表。 在命令行或终端中使用以下命令启动MySQL服务器,并在忽略授权表的情况下运行: ```bash sudo mysqld_safe --skip-grant-tables & ``` 3. 打开一个新的命令行或终端,使用管理员权限的账户登录到MySQL数据库。 ```bash sudo mysql ``` 4. 执行以下命令来更新`root`用户的密码: ```sql UPDATE mysql.user SET authentication_string=PASSWORD('Wtf123456') WHERE User='root' AND Host='localhost'; ``` 这会将`root`用户的密码更改为`Wtf123456`。注意替换为你想要设置的新密码。 5. 刷新权限表,并退出MySQL数据库。 执行以下命令刷新权限表: ```sql FLUSH PRIVILEGES; ``` 然后执行以下命令退出MySQL数据库: ```sql exit; ``` 6. 关闭MySQL服务器。 在原来的命令行或终端中执行以下命令关闭MySQL服务器: ```bash sudo service mysqld stop ``` 7. 再次启动MySQL服务器。 执行以下命令重新启动MySQL服务器: ```bash sudo service mysqld start ``` 此时,你应该可以使用新密码`Wtf123456`登录到MySQL数据库了。
3)验证新密码是否登录成功:
[root@CDH-141 mysql]# mysql -uroot -p
Enter password: #此处输入新密码‘123456’ Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.7.25 MySQL Community Server (GPL) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. show tables; ERROR 1046 (3D000): No database selected show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec)
十三、添加远程访问权限
use mysql
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed update user set host='%' where user='root'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 select host,user from user(或者mysql.user); +-----------+---------------+ | host | user | +-----------+---------------+ | % | root | | localhost | mysql.session | | localhost | mysql.sys | +-----------+---------------+ 3 rows in set (0.00 sec)
注:先使用use mysql切换到mysql数据库,然后用select host, user from user列出
user表中所有的用户及对应的host地址,其中host对应允许访问的主机的ip,“%”表示允许所有的ip访问该数据库,user对应于用户名。
root用户允许所有的ip来连接此数据库,而mysql.sys用户只允许通过本地访问。
给特定的用户属于权限的指令:
grant all privileges on *.* to ’user_name'@'host_name';
flush privileges;
eg:(root用户)
grant all privileges on *.* to 'root'@'%';
flush privileges;
注:
第一条指令是授予权限,第二条是让授予的权限生效;第一条指令中*.*表示所有的数据库中的所有的表,
如果对应于特定的数据库的特定表的权限就可以使用“databaseName.tableName"来授予相应的对象。
扩展:
1,设置访问单个数据库权限
grant all privileges on test.* to 'root'@'%';
说明:设置用户名为root,密码为空,可访问数据库test
2,设置访问全部数据库权限
grant all privileges on *.* to 'root'@'%';
说明:设置用户名为root,密码为空,可访问所有数据库*
3,设置指定用户名访问权限
grant all privileges on *.* to 'tempuser'@'%';
说明:设置指定用户名为tempuser,密码为空,可访问所有数据库*
4,设置密码访问权限
grant all privileges on *.* to 'mysql'@'%' IDENTIFIED BY '123456';
说明:设置指定用户名为mysql,密码为123456,可访问所有数据库*
5,设置指定可访问主机权限
grant all privileges on *.* to 'tempuser'@'192.168.1.258';
说明:设置指定用户名为tempuser,可访问所有数据库*,只有192.168.1.258这台机器有权限访问
6,给Mysql添加远程访问权限的方法
user:myuser pwd:mypassword 从任何主机连接到mysql服务器
GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
user:myuser pwd:mypassword 从192.168.1.3连接到mysql服务器
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
7,修改密码
当你在MySQL数据库中创建一个新用户或者修改一个已有用户的密码后,MySQL会要求你在第一次登录时重置密码,以提高安全性。这是为了确保只有用户本人能够设置他们的密码。
其中,将`用户名`替换为你要重置密码的用户的用户名,`主机名`表示你要允许该用户登录的主机名(可以是`localhost`,也可以是其他允许访问的主机),`新密码`表示你想要设置的新密码。
3. 重置密码之后,用户应该能够使用新密码登录,并且在登录后会要求他们修改密码。
总之,初始或需要更新密码的用户必须在执行其他语句之前先使用`ALTER USER`命令重置密码。这是为了保证数据库的安全性和用户权限的正确性。
ALTER USER '用户名'@'主机' IDENTIFIED BY '新密码';
十四、重启mysql生效
# 重启mysql [root@CDH-141 mysql]#
Shutting down MySQL..[ OK ] Starting MySQL..[ OK ] [root@CDH-141 mysql]#
备注:
由于安装在/usr/local下面的mysql,因此可以在热河文件夹启动mysql
若安装在别的文件夹,请执行以下命令:
# 为了在任何目录下可以登录mysql
ln -s /你的mysql路径/mysql /usr/local/mysql
申明原贴:https://www.cnblogs.com/yy3b2007com/p/10497787.html