Linux中安装mysql数据库(mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz)

Linux中安装mysql数据库(mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz)
原因
记录在linux中安装mysql数据库(二进制版)遇到的困难,因为百度很多安装的方式都不能一次完整安装,所以为了防止下一次重新花费更多的时间,所以记录一下.

步骤
一. 下载linux版本的mysql数据库
1.百度输入mysql,到mysql官网进行下载

在这里插入图片描述

2.官网点击download->community->mysql community server,到达选择版本的页面

在这里插入图片描述

3.我使用的是5.6.39版本的数据库,在页面可以选择,如果最新版本,页面往下拉就可以看到最新版本的下载页面

在这里插入图片描述

4.点击mysql community server 5.6后跳到下面这个页面,因为我使用的是二进制版本的数据库,所以在第二个框中选择linux-generic,找到对应的位数版本,标题下有显示是什么类型的.我们要下的是以tar.gz后缀版本

在这里插入图片描述

5.选好版本后点击download,跳到下载页面

在这里插入图片描述


二. 在linux中安装mysql数据库
1. 下载的安装包上传到linux中

2. 在安装mysql数据库之情,需要安装一些环境,如下:

yum -y install autoconf wget

在这里插入图片描述


3. 安装完相关软件后, 添加mysql运行是所需要的用户mysql,如下:

useradd -M -s /sbin/nologin mysql

cat /etc/passwd |grep mysql

cat /etc/group |grep mysql

在这里插入图片描述

4. 找到上传的mysql安装包,解压到指定文件夹,并修改名字为mysql

tar –zxvf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

cp mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql –r

5. 跳转到解压的文件夹

cd /usr/local/mysql/

在这里插入图片描述

6. 如果解压后的文件夹下有data文件夹,则不用创建data文件夹,如果没有,创建一个,赋予mysql文件夹读取权限

mkdir -p /usr/local/mysql/data

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

在这里插入图片描述

7. 创建mysql5.6的启动脚本,如下

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

8. 修改启动项中的配置文件

vim /etc/init.d/mysqld

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

在这里插入图片描述

9. 修改启动项的权限

chmod +x /etc/init.d/mysqld

10. 初始化mysql5.6,使用如下命令

cd /usr/local/mysql/scripts/

./mysql_install_db –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data

出现错误:

在这里插入图片描述

解决方式(使用下列代码代替上面这段,可以解决问题):

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data &

注意:

bash: scripts/mysql_install_db: /usr/bin/perl: 坏的解释器: 没有那个文件或目录

执行  yum -y install perl perl-devel

安装mysql5.6版本时,初始化数据库出现以下报错:
FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db:
Data::Dumper

解决方法:

安装autoconf库

命令:yum install autoconf -y

初始化数据库出现  :Installing MySQL system tables.../usr/local/mysql/bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

原因:缺少libaio库文件

解决方法:yum install libaio* -y

如果还不行

安装 numactl :yum -y install numactl

再执行初始化命令,成功

10.初始化mysql5.7,使用如下命令

cd /usr/local/mysql/bin/

./mysqld --initialize --user=mysql

这里写图片描述


11. 创建mysql5.6的my.cnf文件,如下:

cd /usr/local/mysql/support-files

cp my-default.cnf /etc/my.cnf

注意:如果出现是否覆盖,选择覆盖,因为在安装linux的时候安装了mysql,会自动创建一个my.cnf文件

在这里插入图片描述

12. 把mysql5.6添加到环境变量

vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin

在这里插入图片描述

(要插入的位置是在profile最下面)

source /etc/profile

env

在这里插入图片描述

13 . 启动mysql5.6,使用如下命令:

1.    启动的方式有两种:
/etc/init.d/mysqld start

或者

service mysqld start

在这里插入图片描述

2. 检测3306端口是否被开启

netstat -tunlp |grep 3306

在这里插入图片描述

如果出现了上面的代码,说明已经安装成功了

14. 设置mysql的root用户登录密码,如下

/usr/local/mysql/bin/mysqladmin -u root password ‘密码’

mysql -h127.0.0.1 -uroot –p密码

在这里插入图片描述

出现错误:

在这里插入图片描述
解决方式:
出现错误的原因是因为/var/lib/mysql/下没有mysql.sock,解决的方式是创建一个,但是这个文件有点特殊,不能进行复制,所以最后通过在/etc/my.cnf中添加一段代码:

    # 一般配置选项
    basedir = /usr/local/mysql
    datadir = /usr/local/mysql/data
    port = 3306
    socket =/var/lib/mysql/mysql.sock
    character-set-server=utf8
    back_log = 300
    max_connections = 3000
    max_connect_errors = 50
    table_open_cache = 4096
    max_allowed_packet = 32M
    #binlog_cache_size = 4M
    max_heap_table_size = 128M
    read_rnd_buffer_size = 16M
    sort_buffer_size = 16M
    join_buffer_size = 16M
    thread_cache_size = 16
    query_cache_size = 128M
    query_cache_limit = 4M
    ft_min_word_len = 8
    thread_stack = 512K
    transaction_isolation = REPEATABLE-READ
    tmp_table_size = 128M
    #log-bin=mysql-bin
    long_query_time = 6
    server_id=1
    innodb_buffer_pool_size = 1G
    innodb_thread_concurrency = 16
    innodb_log_buffer_size = 16M
    innodb_log_file_size = 512M
    innodb_log_files_in_group = 3
    innodb_max_dirty_pages_pct = 90
    innodb_lock_wait_timeout = 120
    innodb_file_per_table = on
    [mysqldump]
    quick
    max_allowed_packet = 32M
    [mysql]
    no-auto-rehash
    default-character-set=utf8
    safe-updates
    [myisamchk]
    key_buffer = 16M
    sort_buffer_size = 16M
    read_buffer = 8M
    write_buffer = 8M
    [mysqlhotcopy]
    interactive-timeout
    [mysqld_safe]
    open-files-limit = 8192
其实关键就一个地方:

socket=/var/lib/mysql/mysql.sock


设置完成后,保存,然后重启mysql服务,会自动在var/lib/mysql下自动创建mysql.sock文件
解决这个困难后,有出现了另一困难:

在这里插入图片描述

说明之前的密码还是没有设置成功,所以需要重新设置密码.解决办法,采用的办法是采用跳过密码验证的方式,登录mysql,然后重置密码.

重置密码

1.在/etc/my.cnf中的[mysqld]后面添加” skip-grant-tables”用来跳过密码验证的过程,如下图所示:

vim /etc/my.cnf

2.按 i 进入插入操作,添加这一行代码

在这里插入图片描述

3.添加完成后,按esc,输入:wq,保存退出

4.重启mysql服务

service mysqld restart

在这里插入图片描述
5.重新输入mysql 进入数据库

 在这里插入图片描述

6.接下来使用sql修改root的密码

mysql> use mysql;
mysql> update user set password=password('新密码') where user='root';
出现错误:

在这里插入图片描述

解决方式:

出现这个问题的原因是: mysql有个叫SQL_SAFE_UPDATES的变量,为了数据库更新操作的安全性,此值默认为1,所以才会出现更新失败的情况。
所以需要设置这个变量为0或off(更改是临时的,重启后失效)

mysql> set sql_safe_updates=0;   

在这里插入图片描述

或者

mysql> set sql_safe_updates=off;

mysql> flush privileges;

mysql> quit
6.然后在my.cnf中去掉刚才添加的内容,然后重启mysql

登录的方式是:mysql –u root –p 然后会提示enter password

在这里插入图片描述
密码设置成功
7.使用可视化界面远程连接数据库

连接问题:
设置好连接的参数后,点击连接,出现如下错误

在这里插入图片描述

解决方式:

出现这种情况的原因可能有三种,

1.网络不通

可以本地使用ping 进行测试是否是网络不通


2.防火墙拦截

1)    开放防火墙端口
2)    添加需要监听的端口
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
3)    保存设置
/etc/init.d/iptables save
4)    查看状态
/etc/init.d/iptables status
5)    临时关闭防火墙服务
service iptables stop
6)    开启防火墙服务
service iptables start
7)    开机不再启动防火墙服务
chkconfig iptables off

3.数据库当前账号拒绝远程访问

1)    如果你想myUser使用myPassword从任何主机连接到mysql服务器的话 
mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 
mysql>FLUSH PRIVILEGES; 
2)    如果你想允许用户myUser从ip为192.168.*.*的主机连接到mysql服务器,并使用myPassword作为密码 
mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.*.*' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 
mysql>FLUSH PRIVILEGES; 
3)    如果你想允许用户myUser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用myPassword作为密码 
mysql>GRANT ALL PRIVILEGES ON dk.* TO 'myUser'@'192.168.1.3' IDENTIFIED BY 'myPassword' WITH GRANT OPTION; 
mysql>FLUSH PRIVILEGES; 
4)    通过修改表来实现远程
mysql -u root –p
mysql>use mysql; 
mysql>update user set host = '%' where user = 'root'; 


注意:使用update的时候,可能遇到设置用户密码的时候遇到样的权限问题,参考上面的设置,设置: mysql> set sql_safe_updates=0;然后重新使用update代码.
mysql>select host, user from user;

我遇到的连接不上的原因是防火墙原因和数据库当前账户不能远程连接的问题:

在这里插入图片描述

防火墙问题使用添加端口监视、保存设置可以解决

当前账户不能远程通过方式(3.2)以及在后面的修改表的方式(3.4)可以解决.

以上设置如果系统不启动还是成功的,但是如果系统重新启动,会出现在linux中输入mysql后就进入数据库,而且使用use mysql会没有用,造成这样的原因是在数据库中存在user为null的匿名账户,解决的方法是删除这些账户:

i.在 etc/my.cnf中添加” skip-grant-tables”,保存退出

ii.重启数据库服务

iii.使用mysql进入数据库

    Use mysql
    set sql_safe_updates=0;
    delete from user where user = '';
    exit
在这里插入图片描述
iv.然后在my.cnf把刚才添加的删除,保存退出
v.重启mysql服务

设置mysql服务开机自启
把服务文件拷贝到init.d下.并重命名mysqld

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

赋予可执行权限

chmod +x /etc/init.d/mysqld

添加服务

chkconfig --add mysqld

显示列表

chkconfig –list
 


如果看到mysql的服务,并且2,3,4,5都是on的话则成功,如果是off,则键入

chkconfig --level 2345 mysql on

重启服务器

验证 如果有监听,说明成功了

netstat -na | grep 3306
在这里插入图片描述

====数据库编码=============
查看编码:
show variables like 'char%';
查看数据库大小写
show variables like 'lower_case_table_names';

[client]
#设置客户端编码
default-character-set=utf8
[mysql]
#设置数据库编码
default-character-set=utf8
[mysqld]
#设置数据库编码
character-set-server=utf8
#设置表名不区分大小写
lower_case_table_names=1
#设置连接数
max_connections=1500

————————————————

转载:https://blog.csdn.net/kai3123919064/article/details/88431110

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值