linux mysql安装

mysql数据库查看版本号
SELECT VERSION();
linux查看版本号

mysqld -V

mysql -version

数据库查看端口号

 show VARIABLES like 'port';

show GLOBAL VARIABLES like 'port';

linux中可以用

netstat -anp | grep mysql

输入Root用户的密码后可以连接到MySQL,接下来执行以下命令删除Root用户:

 

use mysql;
delete from mysql.user where User='root' AND Host='localhost';
flush privileges;

 

其中use mysql;命令是进入MySQL系统;delete from user where User=’root’ AND Host=’localhost’;

命令是删除Root用户;flush privileges;命令是更新用户表。

 

输入完上述命令以后,即可成功删除Root用户,接下来就可以重新建立一个用户。删除Root用户后还需要做一步操作,就是更改Root用户的密码,然后使用以下命令:

 

update mysql.user set authentication_string=password('新的密码') where user='root' AND host='localhost';

update mysql.user set authentication_string=password('新的密码') where user='root' AND host='%';


flush privileges;

 

更改密码以后,重启MySQL服务,恢复原有的正常状态,就完成了MySQL删除Root用户的操作。

 

综上所述,MySQL删除Root用户的方法是比较简单的,但需要使用者在操作时谨慎仔细。

一、查看端口号

1、登录mysql

[root@localhost ~]# mysql -uroot -p
Enter password: 输入数据库密码;

2、使用show global variables like 'port'; 命令查看端口号,

13306即为当前端口号。

二、修改mysql端口号

1、编辑/etc/my.cnf文件

[root@localhost ~]# vi /etc/my.cnf

2、修改端口“port”为自己想要的端口;

3、重启mysql:

[root@localhost ~]# systemctl stop mysqld

[root@localhost ~]# systemctl start mysqld

 

错误

 

 新建mysql.pid

touch /usr/local/mysql/data/mysql.pid

 chmod -R 777 /usr/local/mysql/data

 

 

 

一.安装前的检查和准备工作。

1.1检查自己的liunx是否安装过mysql ,如果未安装执行下面命令应该为空的。

rpm -qa | grep mysql

rpm -qa | grep -i mysql

查看是否安装mysql

mysql -version

1.1.1如果有的话,就删除(XXXX是自己的mysql目录)

rpm -e --nodeps mysql-xxxx

rmp -e 文件名

 

如果有进行强行卸载

rpm -e --nodeps mysql-libs-5.1.52-1.el6_0.1.x86_64

 


1.2查询所有的mysql对应的文件夹

whereis mysqlm
find / -name mysql
1.2.1删除相关目录或者文件

rm -rf /usr/bin/mysql /usr/include/mysql /data/mysql /data/mysql/mysql
1.2.2验证一下是否删除干净

whereis mysqlm
find / -name mysql
1.3检查mysql用户组和用户是否已经创建过,没有就创建(4个命令一步一步操作)

cat /etc/group | grep mysql
cat /etc/passwd |grep mysql
groupadd mysql
useradd -r -g mysql mysql
二.下载mysql5.7

2.1下载MySQL有两种方式:

2.1.1从官网下载

官网下载MySQL安装包

官网地址:https://downloads.mysql.com/archives/community/

最新数据库下载地址

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

2.liunx命令下载(前提是liunx是可以访问外网)

由于在linux上下载比较快,所以,先使用yum安装wget

yum install wget

然后使用wget下载mysql文件包(通常都是下载到指定文件夹下,这里是在"/usr/local/"目录)

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz

登录自己的liunx ,复制上面的命令下载。

 

三.安装Mysql

用连接工具将下载的mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz上传到linux服务器的/usr/local目录下面

# 进入文件目录
cd /usr/local
# 解压
tar -zxvf mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz
# 解压后重命名为mysql
mv mysql-5.7.43-linux-glibc2.12-x86_64 mysql
# 检查mysql组和用户是否存在,如果没有则创建
cat /etc/group|grep mysql
groupadd mysql
# useradd -r参数表示mysql用户是系统用户,不可用于登录系统
useradd -r -g mysql mysql  
# 创建data目录
mkdir /usr/local/mysql/data
# 将/usr/local/mysql/的所有者及所属组改为mysql
chown -R mysql.mysql /usr/local/mysql/


#赋予数据库目录权限

chown mysql:mysql -R /usr/local/mysql/data

chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql

修改配置“/etc/my.cnf”

vim /etc/my.cnf

[mysqld]

#定义服务器 ID,用于主从同步(replication)

server_id=1

#启用二进制日志(binary logging),可以记录数据库的更改操作
log-bin=mysql-bin

#定义写入二进制日志的格式,`ROW` 表示以行为单位写入更改操作

binlog-format=ROW

#MySQL 安装目录的路径
basedir=/usr/local/mysql

#MySQL 数据库文件的存储路径,推荐放到大硬盘中,一般为/mnt/www下
datadir=/usr/local/mysql/data

#监听的端口号
port=13306

#设置 SQL 模式,指定 MySQL 应该如何处理不兼容的 SQL 语法或者非法的数据值
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#是否允许使用符号链接(symlinks)

#如果将 `symbolic-links` 设置为 `1`,则 MySQL 会在数据目录中遵循符号链接。这意味着,你可以使用符号链接将表空间或者数据库文件链接到其他位置,从而将数据存储在不同的磁盘或文件系统中。

#如果将 `symbolic-links` 设置为 `0`,则 MySQL 将不遵循符号链接,这意味着如果数据目录中出现符号链接,MySQL 将忽略它们。

#默认情况下,`symbolic-links` 的值为 `0`,这意味着 MySQL 不允许使用符号链接来链接数据文件或者日志文件。这是为了确保 MySQL 在某些操作系统和文件系统上的稳定性,因为符号链接可能会引入一些不确定性和安全风险。

symbolic-links=0

#允许的最大并发连接数
max_connections=1000

#定义 InnoDB 存储引擎表空间的存储结构,一个表对应一个独立的数据文件
innodb_file_per_table=1

#忽略大小写

#定义表名大小写敏感的设置。如果设置为 `1`,则 MySQL 将所有表名转换为小写
lower_case_table_names=1

#定义 MySQL 的默认字符集
character_set_server=utf8

#指定 MySQL 服务器进程的 PID 文件的存储位置,该文件包含正在运行的 MySQL 进程的进程 ID (PID)。PID文件通常位于 `/var/run` 或者 MySQL 数据目录中,以便其他工具可以轻松地找到MySQL进程。

#推荐放到大硬盘中,一般为/mnt/www下

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

#指定 MySQL 的错误日志的存储路径。错误日志记录了MySQL在运行中遇到的错误,可用于排查问题。 如果MySQL遇到错误,它会将错误信息写入这个日志文件,错误信息可能包括MySQL无法启动或者执行某个查询的错误等

#推荐放到大硬盘中,一般为/mnt/www下

log-error = /usr/local/mysql/data/mysqld.log

#是一个特殊的指令,它表示引入其他配置文件。在这个示例中,`/etc/my.cnf.d/` 目录下的配置文件也会被加载到 MySQL 配置文件中

!includedir /etc/my.cnf.d

或者

在/usr/local/mysql/support-files目录下创建my_default.cnf

# 拷贝,是否覆盖,是
cp my_default.cnf /etc/my.cnf
# 初始化Mysql

初始化数据库

cd /usr/local/mysql/bin


./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/  --user=mysql --pid-file=/usr/local/mysql/data/mysql.pid --initialize

 

 

如果出现以下错误

  ./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

  执行: yum install -y libaio 或 yum install -y libaio.so.1 或 yum -y install numactl

初始化完成之后,输出的日志最后一行会有

 root@localhost: PASSWORD

或者输入cat /data/mysql/mysql.err查看临时密码

初始化完成之后查看日志,可获取初始密码

cat /usr/local/mysql/data/mysqld.log

 

 

 

把启动脚本放到开机初始化目录

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

启动mysql

service mysql start

9.配置环境变量

vim /etc/profile

在底部添加:
export MYSQL_HOME="/usr/local/mysql"
export PATH="$PATH:$MYSQL_HOME/bin"

 

:wq保存退出后执行:

source /etc/profile

 

然后启动mysql,并查看mysql状态

#启动mysql

service mysql start

#查看mysql运行状态

service mysql status

 

修改密码

# 进入目录
cd /usr/local/mysql
# 登录 然后输入初始密码
./bin/mysql -u root -p
# 重置密码
mysql> set password=password('root');
mysql> grant all privileges on *.* to root@'%' identified by 'root';
mysql> flush privileges;
# 添加远程访问权限
mysql> use mysql;

update mysql.user set host='%' where user = 'root';
mysql> update mysql.user set host='%' where user = 'root';
mysql> flush privileges;

#查看用户列表

SELECT User, Host FROM mysql.user;

添加一个用户 test 并授权通过本地机(localhost)访问,密码"password"。

grant all privileges on *.* to test@localhost identified by 'password' with grant option

刷新刚才的内容*

flush privileges

5.查看用户

select host,user from mysql.user

 


# 退出登录
mysql> exit;
# 重启mysql生效
service mysql restart

 使用show global variables like 'port';命令查看端口号

新建用户

如果找不到初始密码的文件,可以这么做:

# 修改my.cnf文件
vim /etc/my.cnf
# 添加内容
skip-grant-tables=1

 

 

停止权限验证skip-grant-tables=1,这样登录就不需要密码,直接回车

# 重启mysql
service mysql restart
# 登录 直接回车
./bin/mysql -u root -p
# 设置密码
update mysql.user set authentication_string=password('root') where user='root' ;
flush privileges;
grant select on `master`.* to root@localhost identified by 'root';
# 添加远程访问权限
mysql> use mysql;
mysql> update user set host='%' where user = 'root';
mysql> flush privileges;
# 退出登录
mysql> exit;
# 修改my.cnf文件
vim /etc/my.cnf
# 去掉内容
skip-grant-tables=1
# 重启mysql
service mysql restart

五、设置MySql自动启动

# 将服务文件拷贝到init.d下,并重命名为mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 赋予可执行权限
chmod +x /etc/init.d/mysqld
# 添加服务
chkconfig --add mysqld
# 显示服务列表
chkconfig --list

如果看到mysql的服务,并且3,4,5都是开的话则成功

 

 

 如果是关,则键入

 chkconfig --level 345 mysqld on

 

 

ps -ef|grep mysql

然后登录mysql

#由于当前并没有全局设置mysql命令,所以先切换到查到/文件夹下

./mysql -uroot -pPASSWORD

然后再执行下面的操作 修改密码

SET PASSWORD = PASSWORD('newPassword');

ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;

FLUSH PRIVILEGES;

use mysql;

#使root用户可以在任何IP访问

update user set host = '%' where user = 'root';

#刷新

FLUSH PRIVILEGES;

--------------或------

修改密码

mysql> use mysql;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
mysql> flush privileges;

14.退出后重启服务

mysql> exit
service mysql restart

 

然后在重新登录;

也有许多小伙伴问什么在其他目录下使用mysql登录命令没有用,mysql命令没有找到,这是因为没有设置软连接,此时,先找到我们安装mysql的目录

然后输入一下命令建立软连接

ln -s /usr/local/mysql/bin/mysql /usr/bin/

设置mysql开机启动

#设置mysql开机自启动

chkconfig mysql on

#取消mysql开机自启动

chkconfig mysql off

# 查看系统服务列表,以及每个服务的运行级别

chkconfig --list

#或

systemctl list-unit-file

 

 

 

 

 

 

 

 

名称:你的项目名称

主机:你liunx的IP地址

协议:SFTP

端口一般都是:22

方法:password

用户名:你的liunx的管理员的账号,一般都是root

密码:就是你设置的密码。

不管是通过那种方式下载的mysql5.7。都会在你liunx目录里。

下面是mysql5.7安装!

1.在liunx中cd 到你上传或者下载的mysql目录。

2.然后复制下面命令解压它:

#解压

tar -zxvf mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz

#将mysql-5.7.43-linux-glibc2.12-x86_64重命名为mysql

mv mysql-5.7.43-linux-glibc2.12-x86_64 /usr/local/mysql


3.解压完成后可以看到上图中多了一个文件夹目录。

4.复制下面的命令:移动这个目录到/usr/local目录下,并修改名字为mysql

mv mysql-5.7.43-linux-glibc2.12-x86_64 /usr/local/mysql
5.复制下面的命令:在/usr/local/mysql目录下创建data目录(一定要在这个目录中创建!!)

mkdir /usr/local/mysql/data
上面步骤完毕后,有的同学可能之前装的mysql到这里后就安装不上了。
是因为你的文件和文件夹没有给他们读写的权限。

6. 修改mysql目录的下所有的目录及文件夹的用户组和用户的权限。

chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql

如果执行报错,多半是没有权限,执行下面语句赋予权限,然后重试

chown mysql:mysql -R /usr/local/mysql

6 查看 Mysql 运行状态

service mysqld status

看见这个绿色就表示启动成功了.

 

 

7 查看初始密码(红色部分为初始密码)

grep ‘password’ /var/log/mysqld.log

如果能正常查看到,则OK;如果查看不到,则表示没有密码。

 

7.如果输入上面命令报错!就说明你没有创建MySQL的用户!(没报错请忽略这一步!)

如果出现 chown: invalid user: ‘mysql:mysql’ 错误,说明mysql用户不存在,执行以下命令,操作完再执行更改权限命令

 

 

 

 



使用下面命令添加mysql用户

groupadd mysql
useradd -r -g mysql mysql
8.下面进行编译并初始化mysql

初始化会出现一个临时密码,一定要记住这个密码!复制保存出来!(后面改密码要用!)

8.1 进入你安装好的mysql的/bin目录

cd /usr/local/mysql/bin
8.2 复制下面的命令进行编译和初始化。(重要)

./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/  --user=mysql --pid-file=/usr/local/mysql/data/mysql.pid --initialize

 

 

 

上图出现的临时密码一定要记录下来!

到这一步就算是安装好了!!!(如果报错,请往下看!),翻到最后!!!!

但是,你还不能访问它!

用上面介绍的Xftp软件进入/usr/local/mysql的目录。在这里新建一个my.cnf的文件。

(mysql在5.0以后就不自带my.cnf文件了,需要自己创建!)

 

用Xftp打开这个文件,右键,用记事本编辑。(复制下面的配置信息到你的my.cnf文件里)

[mysqld]
datadir=/usr/local/mysql/data
port = 13306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0

# 允许最大连接数
max_connections=400
innodb_file_per_table=1
lower_case_table_names=1

# 服务端使用的字符集默认为utf8mb4
character_set_server=utf8mb4

# 设置mysql客户端默认字符集
default-character-set=utf8mb4

 

 

下面是注解

# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=13306

 

 

上面的配置不用我解释了吧?不懂的自己百度搜下吧!

9.启动mysql服务。

/usr/local/mysql/support-files/mysql.server start


10.添加mysql 软连接并重启mysql服务。(一步一步来,这是三个命令不是一个!!)

ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
service mysql restart


11.登录mysql ,并修改你的初始密码!(密码为上面生成的临时密码)

mysql -u root -p
复制下面的命令修改密码:(这里我改的是123456,你们随意!)

set password for root@localhost = password('123456');


12.这里大家应该不会在这里去操作mysql数据库吧?(开启远程连接!用Navicat界面管理软件去连接)

登录MySQL后:输入下面命令:

use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;
执行完毕后就可以用远程连接了!

 

13.报错解决:

报错信息如下:(contOS 7.5 以上会报这个错!!因为它自带了my.cnf文件,编译或者启动mysql的时候会先去找/etc/my.cnf文件,然后你的data文件夹路径会找不到!就会报错!)

Starting MySQL.The server quit without updating PID file (/usr/local/mysql/data/..pid).
解决方法:

1.把自己上面创建的my.cnf文件删除,然后用liunx自带的my.cnf文件。

liunx 自带my.cnf路径: /etc/my.cnf

至此,结束MySQL的安装与测试!

 

注: 如果显示数据库无法访问

 

修改MySql配置文件my.cnf,新增skip-grant-tables

find / -name my.cnf

 修改配置“/etc/my.cnf”

vim /etc/my.cnf

# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4

 

修改文件之前记得先关闭mysql服务

service mysqld stop

通过 vi 指令进入文件

 

新增skip-grant-tables ,添加skip-grant-tables,这样mysql可以免密登录。

 

重启服务

service mysqld start

再次连接MySql,重置密码

任意密码就可以进入了

mysql -u root -p

 

 

执行 mysql -u root -p 时报错:

mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

原因:mysql在启动时发现缺少 libncurses.so.5 这个依赖,并且在/usr/lib以及/lib中也无法找到该依赖

解决:

 find / -name 'libncurses*'

在/usr/lib、/lib、/usr/lib64中寻找一个大于或者等于该依赖版本的依赖文件,我的是在/usr/lin64中找到了一个libncurses.so.6.1,然后建立一个软链接(相当于快捷方式):

sudo ln -s 文件路径 快捷方式路径

sudo ln -s /usr/lib64/libncurses.so.6.1 /usr/lib64/libncurses.so.5

这样就在/usr/lib64下建立了一个libncurses.so.5的快捷方式。mysql在启动时就会寻找该libncurses.so.5依赖的快捷方式,最后实际链接到了libncurses.so.6.1依赖。

 find / -name 'libtinfo*'

error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5

 

此时再执行 mysql -u root -p 时就会通过

 

此时再次查看mysql依赖:

通过 show databases; 注意带 ; 号

show databases;

 

切换到mysql数据库

 

重置密码(为 root )

update user set authentication_string=password(‘root’) where user=‘root’;

修改配置文件my.cnf,删除skip-grant-tables,重启,再登录

删除skip-grant-tables

 

重启服务

service mysqld start

根据指令进入MySQL数据库

mysql -uroot -p

 

再次使用新密码登录即可至此!Linux 下 Mysql 安装到使用讲解完成!

【温馨提示】

如果本地访问Linux数据库失败,则记得看下下面三个配置是否OK。

(1)服务器的防火墙mysql端口3306是否开放

查看防火墙是否已开放3306端口
firewall-cmd --query-port=3306/tcp

设置3306端口为永久开放
firewall-cmd --add-port=3306/tcp --permanent

查看firewalld状态,发现当前是dead状态,即防火墙未开启
systemctl status firewalld

关闭防火墙
systemctl stop firewalld

重启防火墙(设置了新的端口记得先关闭,再重启)
systemctl status firewalld

(2)如果是阿里云ECS,记得查看云安全组规则是否开放了3306端口,如果没有,记得加上

 

(3)如果链接提示如下,则是没有允许远程登录

 

解决办法:

登录服务器mysql数据库

执行 use mysql;
执行 update user set host = '%' where user = 'root';
执行 FLUSH PRIVILEGES;

 

设置mysql开机启动

#设置mysql开机自启动

chkconfig mysql on

#取消mysql开机自启动

chkconfig mysql off

# 查看系统服务列表,以及每个服务的运行级别

chkconfig --list

#或

systemctl list-unit-file

 

设置MySql自动启动
# 将服务文件拷贝到init.d下,并重命名为mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 赋予可执行权限
chmod +x /etc/init.d/mysqld
# 添加服务
chkconfig --add mysqld
# 显示服务列表
chkconfig --list
如果看到mysql的服务,并且3,4,5都是开的话则成功

 

 

如果是关,则键入

chkconfig --level 345 mysqld on

 

防火墙设置

(1)服务器的防火墙mysql端口3306是否开放
​ firewall-cmd --query-port=3306/tcp
(2)设置3306端口为永久开放
​ firewall-cmd --add-port=3306/tcp --permanent
(3)查看firewalld状态,发现当前是dead状态,即防火墙未开启
​ systemctl status firewalld
(4)关闭防火墙
​ systemctl stop firewalld
(5)重启防火墙(设置了新的端口记得重新防火墙)
​ systemctl restart firewalld

posted @ 2022-12-19 15:57  全琪俊  阅读(323)  评论(0)    收藏  举报