mysql(4)-linux环境centos7安装mysql8.0.19详细安装步骤Centos7 Linux 上安装 MySQL8.0.19
1. 安装&解压压缩包到⽬标位置
下载的⽂件应该是⼀个 mysql*. 格式的压缩包,这⾥需要先对 .xz 解压
解压:tar xvJf ***. (注意:J是⼤写的字母)
将解压出来的⽂件移动到 /usr/local/ 且修改原来的名字mysql-8.0.19-linux-glibc2.12-x86_64修改为mysql
mv mysql-8.0.19-linux-glibc2.12-x86_64 /usr/local/
cd /usr/local/
mv mysql-8.0.19-linux-glibc2.12-x86_64 mysql (给mysql-8.0.19-linux-glibc2.12-x86_64重命名)
到这⾥我们就得到 MySQL的⽂件夹了,并且将他移动到了 /usr/local ⽬录下改名为 mysql 。
2. 新建mysql⽤户、组及⽬录
在这⾥我们新建⼀个 mysql ⽤户组和⽤户⽤来运⾏ mysql,作⽤:可以提⾼系统的安全⾏性。
groupadd mysql
useradd -M -g mysql -s /sbin/nologin mysql
passwd mysql
理解:上⾯的命令第1句是新建⼀个⽤户组,第2句再新建⼀个⽤户并且不可以登录,不创建家⽬录,第3句命令给 mysql ⽤户修改密码。
3. 创建mysql数据仓库⽬录
注意在根⽬录下新建
cd /
mkdir /data/mysql 数据仓库⽬录 (新建data⽂件夹以及mysql⽂件夹,⽤来存放mysql的数据仓库)
sudo chown -sql /data
理解:创建 /data ⽬录并且将⽬录属主设置为 mysql. (注意是mysql. 是点)
或者
sudo mkdir -p /data/mysql
sudo chown -sql /data
4.接下来创建 mysql 的配置⽂件 /etc/myf (备注:/etc/下我本来的⽂件是没有myf的这是我新建的)
sudo vim /etc/myf
原有的
mysql下载后安装中出现提示不到安装包[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in /wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/myf.d
1 # MySQL 配置⽂件,
2 #参考:blog.51cto/zhangxinqi/2178407
3 # wwwblogs/lyq863987322/p/8074749.html
替换成以下内容:
# 数据库⽬录 /data/mysql
[client]
port=3306
# mysql socket ⽂件存放地址
socket=/tmp/mysql.sock
# 默认字符集
default-character-set=utf8
[mysqld]
server-id=1
# 端⼝
port=3306
# 运⾏⽤户
user=mysql
# 最⼤连接
max_connections=200
socket=/tmp/mysql.sock
# mysql 安装⽬录(解压后⽂件的⽬录)
basedir=/usr/local/mysql
# 数据⽬录(这⾥放在我们新建的 /data/mysql 下)
datadir=/data/mysql
pid-file=/data/mysql/mysql.pid
init-connect='SET NAMES utf8'
character-set-server=utf8
# 数据库引擎
default-storage-engine=INNODB
log_error=/data/mysql/mysql-error.log
slow_query_log_file=/data/mysql/mysql-slow.log
# 跳过验证密码(想跳过验证密码就放开即不注释不想跳过即会输⼊密码,那就注释掉)
#skip-grant-tables
[mysqldump]
quick
max_allowed_packet=16M
EOF
到这⾥配置⽂件就建好了,上⾯是我⾃⼰的配置,在 mysql 启动的时候就会⾃动读取这个配置⽂件。
可能会有好⼏个地⽅有 mysql 的配置⽂件,它的读取顺序是这样的
/etc/myf
basedir/myf
datadir/myf
–defaults-extra-file #在读取全局配置⽂件之后,读取⽤户配置⽂件 (~/.myf)之前,读取extra指定的参数⽂件~/.myf
所以我们在 /etc 下的配置⽂件 myf 是第⼀个读取的⽂件,读到这个⽂件后就不会在读后⾯路劲中的配置⽂件。
现在让我们进⼊解压后的 mysql ⽬录,进⾏mysql 初始化:
cd /usr/local/mysql (进⼊解压后的 mysql ⽬录)
bin/mysqld --initialize
安装的结果是这样的:
在橘⾊线框中的部分,是⾃动⽣成的 root 密码,待会⼉我们要⽤这个密码进⾏登录。
----遇到问题:但是我是先卸载了centos7⾃带的数据库,⼜卸载了之前安装的数据库,所以在我重装 mysql 的时候,
我遇到了初始化的时候没有任何输出,也就是初始化完毕没有输⼊⼀个初始化密码让我保存,也没有到⽇志⽂件,
结果不知道root的初始密码是什么,只能通过跳过登录验证的⽅式重置密码(⽅法:vi /etc/myf #skip-grant-tables 想跳过验证密码就放开即不注释)
启动 MySQL
cd /usr/local/mysql/support-files/
./mysql.server restart
./mysql.server start
-------------------------2.
7. 使⽤命令⾏登录 MySQL
⽅法1:
cd /usr/local/mysql/support-files/
mysql -u root -proot (这是登录的命令如果有密码就⽤mysql -uroot -proot 第⼀个root是⽤户,第⼆个root是密码)
mysql -u root -p (这是登录的命令如果没有密码就⽤mysql -uroot -p 第⼀个root是⽤户此时配置⽂件需要打开skip-grant-tables )
然后输⼊刚刚⾃动⽣成的 root 密码即可(上⾯输出了密码就使⽤刚刚的密码,上⾯如果没有输出密码,就打开 skip-grant-tables 然后登录成功然后给root设置个密码)
然后修改初始密码,出现报错:
⽅法2:
⽤这句命令的时候bin/mysql -u root -p
遇到报错1:
[root@localhost bin]# mysql -uroot -p
bash: mysql: 未到命令...
解决⽅法:
原因:这是由于系统默认会查/usr/bin下的命令,如果这个命令不在这个⽬录下,当然会不到命令,
我们需要做的就是映射⼀个链接到/usr/bin⽬录下,相当于建⽴⼀个链接⽂件。⾸先得知道mysql命令或mysqladmin命令的完整路径,⽐如mysql的路径是:/usr/local/mysql/bin/mysql,我们则可以这样执⾏命令:
# ln -s /usr/local/mysql/bin/mysql /usr/bin
以下是补充:
linux下,在mysql正常运⾏的情况下,输⼊mysql提⽰:
mysql command not found
遇上-bash: mysql: command not found的情况别着急,这个是因为/usr/local/bin⽬录下缺失mysql导致,只需要⼀下⽅法建⽴软链接,即可以解决:
把mysql安装⽬录,⽐如MYSQLPATH/bin/mysql,映射到/usr/local/bin⽬录下:
# cd /usr/local/bin
# ln -fs /MYSQLPATH/bin/mysql mysql
还有其它常⽤命令mysqladmin、mysqldump等不可⽤时候都可按⽤此⽅法解决。
注:其中MYSQLPATH是mysql的实际安装路径
原⽂参考:www.jb51/article/34622.htm
因为我root没有给我密码,所以先跳过验证,重启mysql
mysql -u root -p 回车键2次,进⼊修改,可以直接看后⾯的
1. 先把root的localhost改成%,设置远程登录:update user set host='%'where user='root';
2.修改加密规则
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
3.更新 root ⽤户密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
flush privileges;
然后修改为不跳过验证,重启mysql,然后使⽤navicat连接,完美结束!
遇到报错2:
[root@localhost mysql]# bin/mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
解决⽅法:
1. mysql -u root -p (命令未到使⽤: ln -s /usr/local/mysql/bin/mysql /usr/bin)
2.cd /usr/local/mysql
[root@localhost mysql]# bin/mysql -u root -p
输⼊之前设置的密码-------进⼊命令⾏------------
开始去执⾏⼀句语句:bin/mysql -u root -p ,,然后修改初始密码,继续出现报错3:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
解决⽅法:
最后执⾏以下三个命令之⼀成功。
下⾯三个命令任选其⼀
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new password'; (new password=root 也就是我的root⽤户密码为root)
alter user 'root'@'localhost' identified by 'new password';
ALTER USER USER() IDENTIFIED BY 'new password';
8. 使⽤Navicat⼯具去连接MySQL
1. 遇到第⼀个问题:Client does not support authentication protocol requested by server;
命令如下:
1、use mysql;
2、alter user 'root'@'localhost' identified with mysql_native_password by '********';
'root'@'localhost'
'root'@'localhost' 是你通过登录mysql然后输⼊select Host,User from user; 看下你⾃⼰的root对应的Host那⾥是%还是localhost ,我的是% 所以我⽤的是:alter user 'root'@'%' identified with mysql_native_password by '********';
思考:怎么把localhost改成%?在⽂章后⾯
3、flush privileges;
2. 然后继续测试连接,遇到第2个问题:Access denied for user 'root'@'DESKTOP-8RFO9MH' (using pasword:YES)
Flush privileges;
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'%'-------------因为我已经新建了root⽤户,所以此句不再执⾏
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
select Host,User from user;
ALTER USER 'root'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'root' PASSWORD EXPIRE NEVER;
select Host,User from user;
重点执⾏以上标红⾊的三条语句。
然后重新连接Navicat,连接成功。
思考:怎么把localhost改成%?
MySQL8.0本地访问设置为远程访问权限
1.登录MySQL
mysql -u root -p
输⼊您的密码
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论