• MySQL的安装及简单调优


    MySQL的安装及调优

    1. 安装注意点

    • ubuntu18的安装方式
    sudo apt-get update
    sudo apt-get install -y mysql-server mysql-client
    sudo mysql_secure_installation
    sudo systemctl status mysql.service
    sudo systemctl enable mysql.service
    

    在执行mysql_secure_installation脚本时:

    Securing the MySQL server deployment.
    
    Connecting to MySQL using a blank password.
    
    VALIDATE PASSWORD PLUGIN can be used to test passwords
    and improve security. It checks the strength of password
    and allows the users to set only those passwords which are
    secure enough. Would you like to setup VALIDATE PASSWORD plugin?
    
    Press y|Y for Yes, any other key for No: y
    
    There are three levels of password validation policy:
    
    LOW    Length >= 8
    MEDIUM Length >= 8, numeric, mixed case, and special characters
    STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
    
    Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2 <---这里一定要选择“2”,否则不使用sudo访问MySQL($ mysql -uroot -p)将失败!
    Please set the password for root here.
    
    New password: 
    
    Re-enter new password: 
    
    Estimated strength of the password: 100 
    Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
    By default, a MySQL installation has an anonymous user,
    allowing anyone to log into MySQL without having to have
    a user account created for them. This is intended only for
    testing, and to make the installation go a bit smoother.
    You should remove them before moving into a production
    environment.
    
    Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
    Success.
    
    
    Normally, root should only be allowed to connect from
    'localhost'. This ensures that someone cannot guess at
    the root password from the network.
    
    Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
    Success.
    
    By default, MySQL comes with a database named 'test' that
    anyone can access. This is also intended only for testing,
    and should be removed before moving into a production
    environment.
    
    
    Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
     - Dropping test database...
    Success.
    
     - Removing privileges on test database...
    Success.
    
    Reloading the privilege tables will ensure that all changes
    made so far will take effect immediately.
    
    Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
    Success.
    
    All done! 
    
    • 关于MySQL权限的可选操作:
    mysql> use mysql;
    mysql> select User,Host,plugin from user;
    +------------------+-----------+-----------------------+
    | User             | Host      | plugin                |
    +------------------+-----------+-----------------------+
    | root             | localhost | auth_socket <--这里   |
    | mysql.session    | localhost | mysql_native_password |
    | mysql.sys        | localhost | mysql_native_password |
    | debian-sys-maint | localhost | mysql_native_password |
    +------------------+-----------+-----------------------+
    
    mysql> update user set plugin='mysql_native_password' where User='root' and Host='localhost';
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
    mysql> flush privileges;
    
    • 修改字符集为UTF-8
    mysql> show variables like 'char%';
    mysql> show variables like 'collation%';
    
    sudo vim /etc/mysql/conf.d/mysql.cnf
    [mysql]
    default-character-set = utf8
    
    sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
    [mysqld]
    collation-server = utf8_general_ci
    character-set-server = utf8
    
    sudo systemctl restart mysql.service
    
    
    • 查看运行状态
    sudo systemctl status mysql.service
    sudo lsof -i:3306
    netstat -ntpl | grep 3306 | grep -v grep
    
    mysql> show full processlist
    

    2. 优化注意点

    • MySQL脚本调优
      使用脚本 tuning-primer.sh
      下载地址https://launchpad.net/mysql-tuning-primer/
      需将tuning-primer.sh拷贝到my.cnf的同级目录执行。
      注,对于如下错误
    FINAL LOGIN ATTEMPT FAILED - Unable to log into socket: /var/lib/mysql/mysql.sock
    
    [Warning] Using a password on the command line interface can be insecure. mysqld is alive
    

    可以如下配置解决:

    [client]
    user = 用户名
    password = 密码
    socket = /var/lib/mysql/mysql.sock
    

    完成调优后删除账号密码。

    注意调优脚本中mysqladmin命令的路径是否打通。

    • 其他优化配置
    skip-name-resolve
    thread_cache_size = 256
    

    表分析例子

    mysql>   只看一条记录即可
    explain SELECT count(new_cheat_id) FROM new_cheat WHERE account_id = '123456' AND offer_id = '111'G
    
    注意观察SQL扫描的总行数rows的值
    
    show index from new_cheat;
    
  • 相关阅读:
    jQuery:balloon气泡提示插件
    等高布局
    html5 语音搜索
    JS编码三种方法的区别:escape、encodeURI和encodeURIComponent
    为什么要两次调用encodeURI来解决乱码问题
    关于时间差查询的一个小技巧
    MySQL对时间的处理总结
    闭包总结:从执行环境来看闭包和垃圾回收
    闭包总结:闭包的7种形式
    JavaScript里面向对象的继承:不使用构造函数实现"继承"
  • 原文地址:https://www.cnblogs.com/cerana/p/11106087.html
Copyright © 2020-2023  润新知