mysql 搭建过程

服务器安装

  • 1、使用以下命令即可进行mysql安装,注意安装前先更新一下软件源以获得最新版本:

      $ sudo apt-get update  #更新软件源
      $ sudo apt-get install mysql-server  #安装mysql5.7
    
  • 2、启动和关闭mysql服务器:

      $ service mysql start
      $ service mysql stop
    
  • 3、确认是否启动成功,mysql节点处于LISTEN状态表示启动成功:

      $ sudo netstat -tap | grep mysql
    
  • 4、进入mysql shell界面:

      $ mysql -u root -p
      没有初始密码的话,cat /etc/mysql/debian.cnf下面区查看,登陆后修改密码
      mysql -u debian-sys-maint -p
      Enter password: 
      这里是关键点,由于mysql5.7没有password字段,密码存储在authentication_string字段中,password()方法还能用
       mysql> show databases;
       mysql> use mysql; 
       mysql> update user set authentication_string=PASSWORD("xiaomu@2020") where user='root';
       mysql> update user set plugin="mysql_native_password";
       mysql> flush privileges; 
       mysql> quit;
    
  • 5、配置文件在/etc/mysql/mysql.conf.d/mysqld.cnf,可以根据自身需求进行配置

      service mysql restart
    
  • 6、创建只读用户

      drop user 'xiaomu'@'%';
      create user 'xiaomu'@'%' identified by 'xiaomu@xxx';
      flush privileges;
      grant INSERT,SELECT,UPDATE,CREATE on *.* to 'xiaomu'@'%' identified  by 'xiaomu@2020' WITH GRANT OPTION;
      flush privileges;
    
  • 6.1 给指定用户授权指定数据库

grant all privileges on `test_db`.* to 'test'@'%' identified by '123456';
    MySQL 8.0 以上版本使用下面的命令授权会报错:

    mysql> grant all privileges on *.* to root@'%' identified by 'myslag123!@#';
    
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘identified by ‘myslag123!@#’’ at line 1

    因为新版的的mysql版本已经将创建用户和赋予权限的操作分开了,需要分两步操作:

    1. 创建用户

    mysql> create user 'root'@'%' identified by 'MySlag123!@#';
    Query OK, 0 rows affected (0.01 sec)
    
    
    2. 赋予权限

    mysql> grant all privileges on *.* to 'root'@'%';
    Query OK, 0 rows affected (0.00 sec)
  • 6.2 视图授权给指定用户
-- create user 'library'@'%' identified by 'library@2023';
-- flush privileges;

grant select,show view on `HomepageOnclick`  to 'library'@'%';
grant select,show view on `HomeViewLog`  to 'library'@'%';
grant select,show view on `PaperViewLog`  to 'library'@'%';
grant select,show view on `SearchLog`  to 'library'@'%';
flush privileges;
  • 7、查看用户

      use mysql;
      SELECT user,host FROM `mysql`.user;
    
      如果host不是%说明不能远程连接,需要为该用户设置下
      GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'xiaomu@2020' WITH GRANT OPTION;
      FLUSH PRIVILEGES;
    
  • 8、mysql 配置文件/etc/mysql/mysql.conf.d/mysqld.cnf;数据存放/var/lib/mysql目录下

  • 9、附mysqld.cnf配置

      [client]
      default-character-set=utf8mb4
      
      [mysql]
      default-character-set=utf8mb4
      
      [mysqld]
      port = 3306
      pid-file        = /var/run/mysqld/mysqld.pid
      socket          = /var/run/mysqld/mysqld.sock
      datadir         = /var/lib/mysql
      
      default-time_zone='+8:00'
      character_set_server=utf8mb4
      collation-server=utf8mb4_unicode_ci
      character-set-client-handshake=FALSE
      init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'
      
      skip-host-cache
      skip-name-resolve
      
      max_connections = 500
      max_connect_errors = 200
      open_files_limit = 8000
      max_allowed_packet = 500M
      max_binlog_size  = 100M
      
      
      innodb_buffer_pool_size = 2000M
      innodb_log_file_size = 100M
      innodb_log_buffer_size = 8M
      innodb_flush_log_at_trx_commit = 1
      innodb_lock_wait_timeout = 50
      innodb_file_per_table
      
      net_read_timeout = 180
      net_write_timeout = 360
      
      wait_timeout = 604800
      interactive_timeout = 604800
      
      server-id=1
      log-bin=mysql-bin #从库会基于此log-bin来做复制
      binlog-format=ROW # 选择row模式
      binlog-do-db=label_data #用于读写分离的具体数据库
      binlog-do-db=label_db
      binlog_ignore_db=mysql #不用于读写分离的具体数据库
      binlog_ignore_db=information_schema #和binlog-do-db一样,可以设置多个
      
      slow_query_log=1
      skip-name-resolve
      thread_stack = 512k
      long_query_time=0.4
      bind-address = 0.0.0.0
      
      #skip-log-bin # 关闭binlog
      expire_logs_days=5 # 保留指定天数的binlog
      
      !includedir /etc/mysql/conf.d/
    
posted @ 2020-08-06 18:05  bhxuwei  阅读(184)  评论(0)    收藏  举报