mysql install
Centos7_X86-64
- 到mysql官网找到对应的版本。我选择的是linux-generic的64位版本。
截屏2020-04-0114.24.31.png
- 在服务器中使用wget xxx下载压缩包文件。其中的xxx指的就是上面步骤中拷贝的链接地址。
- 解压下载的文件:
tar -vxf xxxxxxx.tar.xz -C path
其中由于mysql8.x中已经不提供tar.gz文件了,只有tar.xz和tar,因此解压参数去掉z参数。path为指定的解压目录,也可以直接删掉-C path,表示在解压在当前目录下。
注意,如果下载的是tar文件,这个文件里面是包括了三个压缩包文件的,一个是mysql-xxxx.tar.xz,一个是mysql-router-xxxx.tar.xz,一个是mysql-test-xxxx.tar.xz。我们需要用到的仅仅是mysql-xxxx.tar.xz这一份。 - 接下来配置环境变量,方便后面使用命令时不用再打那么多代码进入到bin目录下运行程序。
cd到解压后的mysql文件目录中。cd mysql-8.0.19-linux-glibc2.12-x86_64/
,使用pwd
打印完整路径并复制该路径。
使用vi工具打开环境变量文件sudo vi ~/.bash_profile
,并将上面复制的路径填入:
MYSQL_PATH=xxxxxx #xxxxxx就是mysql压缩包文件的解压路径。
PATH=$PATH:$MYSQL_PATH/bin
export MYSQL_PATH
使用source ~/.bash_profile
使得环境变量配置的变更生效。
使用cd $MYSQL_PATH
查看是否配置成功。
5.创建mysql用户组sudo groupadd mysql
,并添加mysql用户useradd -r -g mysql mysql
。useradd中r参数表示创建一个系统用户,-g表示指定添加到的用户组,后面第一个mysql表示用户组名,第二mysql表示新添加的用户名。
6.对mysql的配置文件进行处理。sudo vim /etc/my.cnf
,如果是通过解压tar包进行安装Mysql而非使用yum/apt-get/npm等进行安装,是不存在这个文件的,直接使用vim编辑保存即可。
内容如下:
[mysqld]
bind-address=0.0.0.0 #地址,填写服务器ip地址或直接配置0.0.0.0均可
port=3306 #端口,一般mysql默认3306
user=mysql #上面步骤中添加的那个用户名
basedir=/xxxx/mysql #解压后的文件夹路径
datadir=/data/mysql #数据存放的文件路径。
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4 #编码配置
symbolic-links=1 #配置符号链接,即数据库或表可以存储在my.cnf中指定datadir之外的分区或目录,使用符号链接到对应的分区目录。
explicit_defaults_for_timestamp=true #对timestamp数据类型进行配置
-
创建数据存放文件夹。
sudo mkdir xxxx
,路径就是上面步骤中datadir的路径,例如上面的sudo mkdir -p /data/mysql
。 -
将创建的数据存储文件归属配置为之前创建的mysql用户:
sudo chown mysql:mysql -R /data/mysql
,第一个mysql表示用户组,第二mysql表示用户,R参数表示递归处理,即data、mysql即内部的全部文件都指定为mysql用户所有,后面的/data/mysql表示要配置归属用户的文件(路径)。 -
启动mysqld初始化程序
例如:
sudo $MYSQL_PATH/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
--defaults-file表示的是配置文件的路径,我们在etc创建了配置文件my.cnf,这里就配置为/etc/my.cnf
--basedir配置的是mysql解压后的文件路径,如示例代码中我们解压路径是/usr/local/mysql/。
--datadir就是第7步中创建的数据存放文件夹的路径。
--user中的指的是第5步中创建的用户
注意basedir和datadir中一定要在路径后面补全“/”,例如/a/b/c/,如果路径写成了/a/b/c,很可能就会报错 -
查看自动生成的root用户密码
cat /data/mysql/mysql.err
,这里的文件路径对应于/etc/my.cnf中log-error配置的路径。
一般会在最后一行看到“A temporary password is generated for root@localhost:xxxxx ”,这里就是生成的root用户密码。 -
将mysql服务提交到system-server中:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
,以后我们就可以使用systemctl start mysql
或service mysql start
进行mysql服务的启动了。(但是很奇怪的是我使用systemctl是提示无unit的,而且结束时也无法使用service mysql stop而只能使用mysql.server stop) -
修改root登录密码
mysql -uroot -p
,输入log-error中提供的root密码登录mysql。
SET PASSWORD = PASSWORD('新密码'); #设置密码变量
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; #为root用户更改密码
FLUSH PRIVILEGES; 刷新权限
- 其他
如果通过Navicat或其他工具无法连接到mysql,需继续进行下面的操作:
use mysql #访问mysql库
update user set host = '%' where user = 'root'; #使root能再任何host访问
FLUSH PRIVILEGES; #刷新权限
Windows(以win7-x86-64为例)
-
去官方网站下载mysql软件,官网提供了一键安装及压缩包免安装版本。由于一键安装版本会默认帮你安装一个workbench客户端,软件安装包比较大,所以我们一般选择压缩版版本的。
截屏2020-04-1220.45.22.png - 下载好以后,进行解压。
- 个人习惯,解压后进行环境变量的配置,简单说就是将解压的文件目录和mysql/bin目录这两个目录添加到环境变量中。
- 安装及初始化。
运行mysqld --install
(如果没有进行第三步环境变量配置的话,需要先cd到mysql/bin目录下,再执行这条命令) - 当安装成功后,会提示"Service successfully installed"。
若安装失败,建议以失败原因作为关键词到谷歌进行搜索。一般多出现的情况是之前存在老版本mysql未卸载干净,或老版本的mysql服务没有停止。 - 使用
mysqld --initialize --console
进行初始化操作。此项如果执行成功,一般会在最后一行提示“a temporary password is generated for root@localhost:xxxxxx”,记录好这个密码,这是初始化时root用户的登录密码。 - 使用
net start mysql
启动mysql服务。 - 使用root账号登录mysql,修改root用户登录密码。
登录口令为mysql -uroot -p
,随后输入上面记录的临时登录密码进行登录。
登录后,使用alter user ’root‘@’localhost‘ identified by ’xxxx‘
,
在xxxx出填入自定义密码,再使用flush privileges
刷新权限即可。使用exit退出后,测试能否用新密码登录root用户。 - 创建新用户
有时我们需要创建一个自定义用户而不想使用root用户进行操作。
可以通过insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"))
进行操作。
并使用grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"
为新用户赋予权限,其中权限包括all(所有权限)、select、update、delete、drop等等,而数据库.*表示我们可以限制用户只能使用某个数据库的某一些数据表。 - 如果使用mysql8,可能会出现命令行操作mysql数据库是正常的,但是使用navicat等其他数据库软件时会出现错误提示连接失败。大部分情况是由于mysql8中修改了加密规则,因此我们只需要在命令行重新更改加密规则,就能在Navicat正常连接到数据库了。
mysql8安装时选择了强加密规则caching_sha2_password,与之前的mysql5.7的mysql_native_password规则不同,navicate驱动目前不支持新加密规则
手动修改加密规则改成与mysql5.7一样
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码
FLUSH PRIVILEGES; #刷新权限
配置文件
在执行安装之前,我们也可以根据个人需要修改配置文件:
[mysqld]
# 设置mysql的安装目录,也就是我们解压的目录
basedir=C:/mysql-x.x.xx-winx64
# 设置mysql数据库的数据的存放目录
# datadir=C:/mysql-x.x.xx-winx64/data
# 设置默认使用的端口
port=3306
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人试图攻击数据库
max_connect_errors=10
# 服务端使用的字符集
character-set-server=utf8mb4
# 数据库字符集对应一些排序等规则使用的字符集
collation-server=utf8mb4_general_ci
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件作为认证加密方式
# MySQL8.0默认认证加密方式为caching_sha2_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4
port=3306