manjaro安装mysql

文章目录

  • manjaro安装MySQL
    • 自动安装
    • 手动安装

manjaro安装MySQL

首先,MySQL安装根据内容分为server、client。mysql-server就是存储数据、为客户提供数据的程序,本文主要介绍此部分内容。而mysql-client就是想server请求数据的程序,这部分就不详细介绍了。

自动安装

# OS: 4.20.17-1-MANJARO
# mysql: 8.0.15
# 安装MySQL
pacman -S mysql
# 初始化MySQL,记住输出的root密码
mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql
# 设置开机启动MySQL服务
systemctl enable mysqld.service
systemctl daemon-reload
systemctl start mysqld.service
# 使用MySQL前必须修改root密码,MySQL 8.0.15不能使用set password修改密码
mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
# 完成

手动安装

  1. 下载MySQL

    点击MySQL Community Server下载。
    manjaro安装mysql_第1张图片
    MySQL并没有直接提供arch类系统的版本,选择Linux-Generic以及x86,64-bit版本。

  2. 解压

    # 由于下载的压缩包格式为.tar.xz,因此必须先解压。解压的结果是.tar文件。
    xz -d mysql-8.0.15-linux-glibc2.12-x86_64.tar.xz
    tar -xv -f mysql-8.0.15-linux-glibc2.12-x86_64.tar
    
  3. 将解压内容放入合适的任意位置。

    我将MySQL放入/usr/local/share。

  4. 创建mysql用户。

    # 不需要创建HOME目录
    useradd -r mysql -M
    # 将MySQL安装目录的拥有者以及用户组修改为mysql
    chown -R mysql:mysql /usr/local/share/mysql
    
  5. 修改mysql配置文件/etc/my.cnf

    [client]
    # 设置 mysql 客户端 socket 文件位置
    socket = /usr/local/share/mysql/mysql.sock
    
    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set = UTF8MB4
    socket = /usr/local/share/mysql/mysql.sock
    
    [mysqld]
    innodb_buffer_pool_size = 128M
    
    # mysql 安装目录
    basedir = /usr/local/share/mysql
    
    # mysql 数据存储目录
    datadir = /usr/local/share/mysql/data
    
    # 端口
    port = 3306
    
    # 本机序号为1,表示master
    server_id = 1
    
    # 设置 mysql 服务端 socket 文件位置
    socket = /usr/local/share/mysql/mysql.sock
    
    # 设置mysql最大连接数
    max_connections = 20
    
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server = UTF8MB4
    
    # 创建新表时将使用的默认存储引擎
    default-storage-engine = INNODB
    
    # 联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
    join_buffer_size = 128M
    
    # MySQL执行排序使用的缓冲大小。如果想要增加ORDER BY的速度,首先看是否可以让MySQL使用索引而不是额外的排序阶段。
    sort_buffer_size = 8M
    
    # MySQL的随机读缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。
    read_rnd_buffer_size = 4M 
    
    # 一个事务,在没有提交的时候,产生的日志,记录到Cache中;等到事务提交需要提交的时候,则把日志持久化到磁盘。
    # 默认binlog_cache_size大小32K
    binlog_cache_size = 1M
    
    # 这个值(默认8)表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,
    # 如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建,如果有很多新的线程,
    # 增加这个值可以改善系统性能.通过比较Connections和Threads_created状态的变量,可以看到这个变量的作用。(–>表示要调整的值)
    # 根据物理内存设置规则如下:
    # 1G  —> 8
    # 2G  —> 16
    # 3G  —> 32
    # 大于3G  —> 64
    thread_cache_size = 8
    
    # MySQL的查询缓冲大小(从4.0.1开始,MySQL提供了查询缓冲机制)使用查询缓冲,MySQL将SELECT语句和查询结果存放在缓冲区中,
    # 今后对于同样的SELECT语句(区分大小写),将直接从缓冲区中读取结果。根据MySQL用户手册,使用查询缓冲最多可以达到238%的效率。
    # 通过检查状态值'Qcache_%',可以知道query_cache_size设置是否合理:如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况,
    # 如果Qcache_hits的值也非常大,则表明查询缓冲使用非常频繁,此时需要增加缓冲大小;如果Qcache_hits的值不大,则表明你的查询重复率很低,
    # 这种情况下使用查询缓冲反而会影响效率,那么可以考虑不用查询缓冲。此外,在SELECT语句中加入SQL_NO_CACHE可以明确表示不使用查询缓冲
    # query_cache_size = 8M
    
    # 指定单个查询能够使用的缓冲区大小,默认1M
    # query_cache_limit = 2M
    
    # 指定用于索引的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写),到你能负担得起那样多。如果你使它太大,
    # 系统将开始换页并且真的变慢了。对于内存在4GB左右的服务器该参数可设置为384M或512M。通过检查状态值Key_read_requests和Key_reads,
    # 可以知道key_buffer_size设置是否合理。比例key_reads/key_read_requests应该尽可能的低,
    # 至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE 'key_read%'获得)。注意:该参数值设置的过大反而会是服务器整体效率降低
    key_buffer_size = 4M
    
    # 分词词汇最小长度,默认4
    ft_min_word_len = 4
    
    # MySQL支持4种事务隔离级别,他们分别是:
    # READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE.
    # 如没有指定,MySQL默认采用的是REPEATABLE-READ,ORACLE默认的是READ-COMMITTED
    transaction_isolation = REPEATABLE-READ
    
    # 默认时区
    default-time_zone = '+8:00'
    
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
    
  6. 初始化数据库

    # 此命令将输出root的初始密码
    mysqld --initialize --user=mysql --basedir=/usr/local/share/mysql --datadir=/usr/local/share/mysql/data
    
  7. MySQL服务

    # 启动
    /usr/local/share/mysql/support-files/mysql.server start
    # 关闭
    /usr/local/share/mysql/support-files/mysql.server stop
    

    我尝试了编写manjaro系统下的service文件,并不能开机自动启动。查看service状态,发现/usr/local/share/mysql/support-files/mysql.server start是运行后就会结束的命令。而service中的命令好像是持续运行的(个人认为)。

    建议:制作命令的别名。

  8. 添加系统路径

    1. 在使用的zsh添加

      vim ~/.zshrc
      
      export PATH=/usr/local/share/mysql/bin:$PATH
      
    2. 个人使用的方法

      vim /etc/profile.d/mysql.sh
      
      export PATH=/usr/local/share/mysql/bin:$PATH
      

基本上可以使用mysql了。

参考:

  1. linux 安装MySql 5.7.20 操作步骤【亲测】
  2. Mysql 8.0修改密码
  3. MySQL配置文件my.cnf参数优化和中文详解
  4. Arch Linux 安装 MySQL 8.0

你可能感兴趣的:(mysql,manjaro)