目标:
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数据目录
2.在线下载mysql5.7
官网地址:https://downloads.mysql.com/archives/community/
下载地址:https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
# 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 // 下载安装包,等待下载完成
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/mysql/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 表示启动成功
若启动时报错
Starting MySQL.The server quit without updating PID file
可能时权限不组,重新执行第 6 步
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 步中的密码,密码输入正确后如图:
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
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步不记得,则直接重新改密码
操作前确认mysql停止服务
# /etc/init.d/mysqld stop
# 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; // 查看是否更新成功
参考文章:
1.安装到指定目录
linux安装mysql详细步骤
2.下载和复制
linux系统安装mysql
3.登录成功后提示修改密码
【mysql】You must reset your password using ALTER USER statement before executing this statement报错处理
4.mysql command not found
解决linux mysql命令 bash: mysql: command not found 的方法
5.使用 update 更新 authentication_string和修改 etc/my.cnf 文件无密码进入mysql
在MySQL登录时出现Access denied for user 'root'@'localhost' (using password: YES) 拒绝访问,并可修改MySQL密码
6.安装 libaio 库
linux下安装mysql5.6,指定安装目录
7.通过 mysqld_safe 安全模式无密码登录mysql;有和无原密码 更新密码;修改 host 为 % ;重要
linux修改mysql数据库密码
8.刷新权限(必须步骤):flush privileges;
linux中修改mysql数据库密码
9.MySQL5.7及后续版本 改密码无password字段
10.linux 为 my.cnf;windows 为 my.ini
my.ini文件参数中文注释
11.查看mysql user表 Host列为%是什么意思
12.linux 常用命令
linux 查看数据库和表 mysql 命令
13.正确修改密码 重要
Mysql5.7忘记root密码及mysql5.7修改root密码的方法
14.远程无法连接mysql
本地无法连接远程服务器
常用命令
// 启动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端口号
mysql> show variables like 'port';
// 切换数据表
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