mysql install

Centos7_X86-64

  1. 到mysql官网找到对应的版本。我选择的是linux-generic的64位版本。
    截屏2020-04-0114.24.31.png
截屏2020-04-0114.34.02.png
  1. 在服务器中使用wget xxx下载压缩包文件。其中的xxx指的就是上面步骤中拷贝的链接地址。
  2. 解压下载的文件: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这一份。
  3. 接下来配置环境变量,方便后面使用命令时不用再打那么多代码进入到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数据类型进行配置
  1. 创建数据存放文件夹。sudo mkdir xxxx,路径就是上面步骤中datadir的路径,例如上面的sudo mkdir -p /data/mysql

  2. 将创建的数据存储文件归属配置为之前创建的mysql用户:
    sudo chown mysql:mysql -R /data/mysql,第一个mysql表示用户组,第二mysql表示用户,R参数表示递归处理,即data、mysql即内部的全部文件都指定为mysql用户所有,后面的/data/mysql表示要配置归属用户的文件(路径)。

  3. 启动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,很可能就会报错

  4. 查看自动生成的root用户密码
    cat /data/mysql/mysql.err,这里的文件路径对应于/etc/my.cnf中log-error配置的路径。
    一般会在最后一行看到“A temporary password is generated for root@localhost:xxxxx ”,这里就是生成的root用户密码。

  5. 将mysql服务提交到system-server中:
    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql,以后我们就可以使用systemctl start mysqlservice mysql start进行mysql服务的启动了。(但是很奇怪的是我使用systemctl是提示无unit的,而且结束时也无法使用service mysql stop而只能使用mysql.server stop)

  6. 修改root登录密码
    mysql -uroot -p,输入log-error中提供的root密码登录mysql。

SET PASSWORD = PASSWORD('新密码'); #设置密码变量
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; #为root用户更改密码
FLUSH PRIVILEGES;     刷新权限                            
  1. 其他
    如果通过Navicat或其他工具无法连接到mysql,需继续进行下面的操作:

use mysql                                            #访问mysql库
update user set host = '%' where user = 'root';      #使root能再任何host访问
FLUSH PRIVILEGES;                                    #刷新权限

Windows(以win7-x86-64为例)

  1. 去官方网站下载mysql软件,官网提供了一键安装及压缩包免安装版本。由于一键安装版本会默认帮你安装一个workbench客户端,软件安装包比较大,所以我们一般选择压缩版版本的。


    截屏2020-04-1220.45.22.png
  2. 下载好以后,进行解压。
  3. 个人习惯,解压后进行环境变量的配置,简单说就是将解压的文件目录和mysql/bin目录这两个目录添加到环境变量中。
  4. 安装及初始化。
    运行mysqld --install(如果没有进行第三步环境变量配置的话,需要先cd到mysql/bin目录下,再执行这条命令)
  5. 当安装成功后,会提示"Service successfully installed"。
    若安装失败,建议以失败原因作为关键词到谷歌进行搜索。一般多出现的情况是之前存在老版本mysql未卸载干净,或老版本的mysql服务没有停止。
  6. 使用mysqld --initialize --console进行初始化操作。此项如果执行成功,一般会在最后一行提示“a temporary password is generated for root@localhost:xxxxxx”,记录好这个密码,这是初始化时root用户的登录密码。
  7. 使用net start mysql启动mysql服务。
  8. 使用root账号登录mysql,修改root用户登录密码。
    登录口令为mysql -uroot -p,随后输入上面记录的临时登录密码进行登录。
    登录后,使用alter user ’root‘@’localhost‘ identified by ’xxxx‘
    在xxxx出填入自定义密码,再使用flush privileges刷新权限即可。使用exit退出后,测试能否用新密码登录root用户。
  9. 创建新用户
    有时我们需要创建一个自定义用户而不想使用root用户进行操作。
    可以通过insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"))进行操作。
    并使用grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"为新用户赋予权限,其中权限包括all(所有权限)、select、update、delete、drop等等,而数据库.*表示我们可以限制用户只能使用某个数据库的某一些数据表。
  10. 如果使用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

你可能感兴趣的:(mysql install)