linux 安装mysql 指定目录_Linux在线安装mysql5.7到指定目录

本文详细介绍了如何在阿里云CentOS 7.5上自定义安装MySQL 5.7到特定目录,包括创建安装目录、下载安装包、解压、配置用户和权限、初始化数据库、修改配置文件、启动服务以及解决登录权限问题。通过这些步骤,你可以成功地在Linux系统中安装并管理MySQL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标:

1.自定义mysql安装目录

2.自定义mysql数据目录

3.正确安装并启动mysql

4.输入密码正确登录

说明:

本文mysql下载目录 /usr/download

本文mysql安装目录 /software/mysql

本文mysql数据目录 /file/data/mysql

正文所有命令都是绝对路径

环境:阿里云CentOS 7.5 64位

1.创建相关目录

(1) 创建压缩包下载目录

# cd usr // 进入用户目录

# mkdir download // 创建安装包目录

# ls // 查看

bin etc include lib64 local share tmp

download games lib libexec sbin src

(2) 创建mysql安装目录

# cd / // 回到跟目录

# mkdir software // 创建应用安装目录

# cd software // 进入应用目录

删除 # mkdir mysql // 创建mysql安装目录

(3) 创建mysql数据目录

# cd / // 回到跟目录

# mkdir file // 创建文件目录

# cd file // 进入文件目录

# mkdir data // 创建数据目录

# cd data // 进入数据目录

# mkdir mysql // 创建mysql数据目录

899b7abb2ba6

下载地址

# cd / // 回到根目录

# cd usr/download // 进入安装包下载目录

# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz // 下载安装包,等待下载完成

899b7abb2ba6

下载中

899b7abb2ba6

下载完成

3.解压

在当前目录 /usr/download

# tar -zxvf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz

# ls // 查看解压结果

# ls

mysql-5.7.29-linux-glibc2.12-x86_64

mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz

4.复制解压后的mysql目录到系统的本地软件目录

在当前目录下 /usr/download/

# cp mysql-5.7.29-linux-glibc2.12-x86_64 /software/mysql -r // 执行过程稍长,也可以用 mv 命令直接移动

命令执行结束后到software/mysql 下看是否复制成功

# cd / // 回到根目录

# # cd software/mysql/ // 到文件安装目录

# ls

bin docs include lib LICENSE man README share support-files

看到以上表示已经成功解压到指定目录

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

# cd / // 回到根目录

# groupadd mysql // 创建mysql用户组

# useradd -r -g mysql mysql // 创建mysql用户

如果出现

groupadd: group 'mysql' already exists

表示已经存在mysql用户组(useradd时同理),则继续下一步

*6.关联myql用户到mysql用户组中

当前操作在根目录下

#chown -R mysql:mysql /software/mysql/

#chown -R mysql:mysql /file/data/mysql/

#chown -R mysql /software/mysql/

#chown -R mysql /file/data/mysql

7.更改mysql安装文件夹mysql/的权限

当前操作在根目录下

# chmod -R 755 /software/mysql/

8.安装libaio依赖包

# yum search libaio // 查询是否暗转libaio依赖包

# yum install libaio // 如果没安装,则安装

9.初始化mysql命令

# cd /software/mysql/bin // 进入应用安装的bin目录下

# ./mysqld --user=mysql --basedir=/software/mysql --datadir=/file/data/mysql --initialize // 初始化,注意目录

执行成功后最后一句为

2020-06-14T06:33:29.412232Z 1 [Note] A temporary password is generated for root@localhost: *a%idaUrn1r_

其中@localhost:后面为初始密码

10.启动mysql服务

# cd / // 回到根目录

# sh /software/mysql/support-files/mysql.server start // 启动服务

上面启动mysql服务命令是会报错的,因为没有修改mysql的配置文件,报错内容大致如下:

/software/mysql/support-files/mysql.server: line 239: my_print_defaults: command not found

/software/mysql/support-files/mysql.server: line 259: cd: /usr/local/mysql: No such file or directory

Starting MySQLCouldn't find MySQL server (/usr/local/mysql/[FAILED]ld_safe)

11.修改Mysql配置文件

当前为根目录

# vim /software/mysql/support-files/mysql.server // 编辑文件

编辑前

# Set some defaults

mysqld_pid_file_path=

if test -z "$basedir"

then

basedir=/usr/local/mysql

bindir=/usr/local/mysql/bin

if test -z "$datadir"

then

datadir=/usr/local/mysql/data

fi

sbindir=/usr/local/mysql/bin

libexecdir=/usr/local/mysql/bin

else

bindir="$basedir/bin"

if test -z "$datadir"

then

datadir="$basedir/data"

fi

sbindir="$basedir/sbin"

libexecdir="$basedir/libexec"

fi

编辑后

# Set some defaults

mysqld_pid_file_path=

if test -z "$basedir"

then

basedir=/software/mysql // 修改了这里

bindir=/software/mysql/bin // 修改了这里

if test -z "$datadir"

then

datadir=/file/data/mysql // 修改了这里

fi

sbindir=/software/bin // 修改了这里

libexecdir=/software/mysql/bin // 修改了这里

else

bindir="$basedir/bin"

if test -z "$datadir"

then

datadir="$basedir/data"

fi

sbindir="$basedir/sbin"

libexecdir="$basedir/libexec"

fi

保存并退出

12.将mysql脚本复制到/etc/init.d

# cp software/mysql/support-files/mysql.server /etc/init.d/mysqld // 复制

# chmod 755 /etc/init.d/mysqld // 赋予权限

13.修改my.cnf文件

# vi /etc/my.cnf // 编辑my.cnf文件

修改为以下内容

[client]

no-beep

socket =/software/mysql/mysql.sock

# pipe

# socket=0.0

port=3306

[mysql]

default-character-set=utf8

[mysqld]

basedir=/software/mysql

datadir=/file/data/mysql

port=3306

pid-file=/software/mysql/mysqld.pid

#skip-grant-tables

skip-name-resolve

socket = /software/mysql/mysql.sock

character-set-server=utf8

default-storage-engine=INNODB

explicit_defaults_for_timestamp = true

# Server Id.

server-id=1

max_connections=2000

query_cache_size=0

table_open_cache=2000

tmp_table_size=246M

thread_cache_size=300

#限定用于每个数据库线程的栈大小。默认设置足以满足大多数应用

thread_stack = 192k

key_buffer_size=512M

read_buffer_size=4M

read_rnd_buffer_size=32M

innodb_data_home_dir = /file/data/mysql

innodb_flush_log_at_trx_commit=0

innodb_log_buffer_size=16M

innodb_buffer_pool_size=256M

innodb_log_file_size=128M

innodb_thread_concurrency=128

innodb_autoextend_increment=1000

innodb_buffer_pool_instances=8

innodb_concurrency_tickets=5000

innodb_old_blocks_time=1000

innodb_open_files=300

innodb_stats_on_metadata=0

innodb_file_per_table=1

innodb_checksum_algorithm=0

back_log=80

flush_time=0

join_buffer_size=128M

max_allowed_packet=1024M

max_connect_errors=2000

open_files_limit=4161

query_cache_type=0

sort_buffer_size=32M

table_definition_cache=1400

binlog_row_event_max_size=8K

sync_master_info=10000

sync_relay_log=10000

sync_relay_log_info=10000

#批量插入数据缓存大小,可以有效提高插入效率,默认为8M

bulk_insert_buffer_size = 64M

interactive_timeout = 120

wait_timeout = 120

log-bin-trust-function-creators=1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#

# include all files from the config directory

#

!includedir /etc/my.cnf.d

保存并退出

14.启动mysql

# /etc/init.d/mysqld start // 启动

也可以这样启动

# cd software/mysql/support-files/

# sh mysql.server start

启动时

Starting MySQL.Logging to '/file/data/mysql/iZ8vbadihs67tm2a228lw4Z.err'.

... [ OK ]

第一行为日志

第二行为状态,OK 表示启动成功

15.登录mysql

当前为根目录

# mysql -uroot -p

-bash: mysql: command not found

提示找不到mysql命令,原因:这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。

# ln -s /software/mysql/bin/mysql /usr/bin // 第一个字母是小写 L

再执行登录命令mysql -u root -p,密码为第 9 步中的密码,密码输入正确后如图:

899b7abb2ba6

成功登录

16.成功进入但是无法操作数据库

mysql> use mysql

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

修改密码

mysql> ALTER USER USER() IDENTIFIED BY 'TesT22$_';

以上表示密码修改为 TesT22$_

注意以 分号 结尾

输出以下表示修改成功

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id: 3

Current database: *** NONE ***

Query OK, 0 rows affected (0.00 sec)

mysql>

尝试执行

mysql> use mysql

提示以下错误

No connection. Trying to reconnect...

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ERROR:

Can't connect to the server

mysql>

这是因为root登录权限不足,具体修改方法如下

mysql> exit // 先退出mysql命令行

Bye

// 当前为根目录

# /etc/init.d/mysqld stop // 停止mysql

Shutting down MySQL.. [ OK ]

# cd software/mysql/bin/ // 进入mysql安装的命令行目录

# sh mysqld_safe --skip-grant-tables & // 安全模式登录mysql

899b7abb2ba6

安全模式登录mysql

mysql // 在上一步之后直接输入mysql,进入 mysql命令行

mysql> 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

mysql> update user set host = '%' where user = 'root'; // 输入这句,成功后会提示如下

Query OK, 1 row affected (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> select host,user from user; // 查看是否修改成功,成功后提示如下

+-----------+---------------+

| host | user |

+-----------+---------------+

| % | root |

| localhost | mysql.session |

| localhost | mysql.sys |

+-----------+---------------+

3 rows in set (0.00 sec)

mysql> flush privileges; // 刷新数据库

Query OK, 0 rows affected (0.00 sec)

mysql> exit // 退出

重启mysql

# cd / // 回到根目录

# etc/init.d/mysqld restart // 重启,等待重启完成

# mysql -u root -p // 然后再输入密码即可

重要

如果从第15步不记得,则直接重新改密码

# cd software/mysql/bin // 进入mysql安装的bin目录

# sh mysqld_safe --skip-grant-tables & // 安全模式启动

mysql // 直接键入 mysql,进入mysql命令行

myql> update mysql.user set authentication_string=password('TesT22$_') where user='root'; // 密码修改为 TesT22$_

mysql> flush privileges; // 刷新权限

mysql> exit; // 退出

mysql> select host,user,authentication_string from user; // 查看是否更新成功

899b7abb2ba6

如图才表示更新成功

常用命令

// 启动mysql

# /etc/init.d/mysqld start

// 停止mysql

# /etc/init.d/mysqld stop

// 重启mysql

# /etc/init.d/mysqld restart

// 以上需要执行第 12.将mysql脚本复制到/etc/init.d

// 进入mysql的bin目录

# cd software/mysql/bin

// 安全模式启动,需要cd 到mysql的bin目录

# sh mysqld_safe --skip-grant-tables &

// 键入

mysql

// 登录

# mysql -u root -p

// 查看数据库

mysql> show databases;

//查看表说明

mysql> describe user;

// 切换数据表

mysql> use mysql;

// 更新密码为 TesT22$_

update mysql.user set authentication_string=password('TesT22$_') where user='root';

// 刷新权限

mysql> flush privileges;

// 退出

mysql> exit;

// 查看是否更新成功

select host,user,authentication_string from user;

// 查看mysql状态

# service mysqld status

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值