今天花了一天的时间给Linux系统装MySQL,中途遇到了不少问题,导致重新开始了好几次,特此总结,以便复查。
首先说明一下环境,用的是VMware虚拟机搭载CentOS6.5的Linux系统,并用CRT远程访问控制,所用MySQL版本为mysql-5.7.23。
Linux系统所用的MySQL的下载在这里就不赘述了,重点是安装与配置。
在安装之前有必要先提一下,需要先在Linux上安装一些必要的依赖,对于mysql的依赖安装使用以下命令即可:
1 2 yum -y install libaio.so .1 libgcc_s.so .1 libstdc++.so .6 yum update libstdc++-4.4 .7 -4. el6.x86_64
首先将下载好的mysql压缩包(mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz)上传到linux,在CRT中使用快捷键Alt+P弹出上传窗口,将下载好的压缩包拖到该窗口,上传到家目录下(/root)。
在该目录下执行解压缩命令,解压到指定目录/usr/local下,并重命名为mysql,使用命令为tar -zxvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz -C /usr/local (其中 ‘ -C ’ 是解压到指定目录)
在mysql目录下创建database 目录 、data 目录 、data/binlog 二进制日志目录 、 data/relay 主从复制的本地文件存放目录 、 data/tmp临时数据存放目录 , 并权限设置为0755:
然后创建 mysql 用户组和 mysql 用户 , 把 mysql 目录所有者赋给 mysql 用户,(这里显示已经存在,无所谓,不管有没有都执行一下),然后进入mysql目录:
然后初始化mysql数据库,使用命令如下:[root@localhost mysql]# bin/mysql --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/datadase
初始化完成后会显示日志信息,最后一行会显示一个随机生成的初始密码,如果没有任何日志信息,可用cat命令查看data文件夹下的error.log文件,即 cat data/error.log,内容如下:
可以看到随机生成的密码。建议将这个密码先复制到文本文件中,以防待会丢失。
接下来为mysql的启动做一些服务性的准备,首先创建启动服务:[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysql
至于这为什么叫创建启动服务,还有待我去研究,哈哈(滑稽)。
然后配置环境变量,编辑/etc/profile文件:
[root@localhost mysql]# vim /ect/profile
加入如下三行后保存退出:
重新加载配置文件:[root@localhost mysql]# service mysql start
然后配置一个叫my.cnf的mysql启动配置文件,那么它在哪呢?别着急,在/etc目录下新建一个my.cnf就好了,里边的东西自己写,对,就是自己写。主要配置有如下几个:详细配置见本文末尾附录。
现在万事俱备,准备启动mysql服务了,使用service mysql start 命令即可启动服务,emmmm,问题出现了,启动失败了,报了个错:
原来是已经有mysql服务进程存在了,那就把已经存在的杀掉吧,使用 ps -ef | grep mysql 把这些进程信息揪出来,然后kill -9 PID 杀死进程,再执行服务启动指令,就没有问题啦,成功启动后显示如下:
然后,我们就可以用熟悉的 mysql -u root -p来登录mysql了,注意密码是刚刚那个很难看的初始密码哦,认真点,不然容易输错哦。
登陆成功后,随便运行一条SQL语句,例如show databases; 系统会提示强制修改初始密码,那就改呗:set password=password('123456') (密码自行设置)
修改之后就可以正常使用啦。不过我们不希望我们每次手动去启动mysql服务,我们希望它在开机时就自动启动,没有问题,Linux办得到!使用如下两个命令即可让mysql服务变为开机自启:
1 2 [root@localhost mysql]# chkconfig --add mysql [root@localhost mysql]# chkconfig mysql on
到此我们在Linux上安装mysql已经完成啦,但是还有一个问题,就是我们在开发中一般不会使用黑窗口去直接访问数据库,而是使用集成软件远程登录访问,比如可以用熟悉的SQL yog或者其他软件来访问,问题也就正出在这里,如果现在直接使用SQLyog连接Linux的mysql数据库是无法连接成功的,因为此时root用户还没有远程控制权限,只能在Linux本机上称霸。
那么我们就需要给root用户这个权限,操作如下:
意为:将所有权限授予root用户,并以密码123456作为认证。刷新权限。
然后我们再尝试远程连接数据库,发现还是连接不上这是怎么回事呢?
原来是Linux的防火墙默认将3306端口拦截了,我们还需要对Linux的防火墙进行一定的配置,执行如下两条指令:
1 2 [root@localhost mysql]# /sbin/iptables -I INPUT -p tcp --dport 3306 j ACCEPT [root@localhost mysql]# /etc/rc.d /init.d /iptables save
可以看到防火墙将3306端口设为允许,并保存。
然后我们再尝试连接,就可以连接得上啦。
搞定!
附录:my.cnf完整配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 [client ] port = 3306 socket = /usr /local /mysql /data /mysql .sock default-character-set = utf8mb4 [mysqld ] port = 3306 socket = /usr /local /mysql /data /mysql .sock pid-file = /usr /local /mysql /data /mysql .pid basedir = /usr /local /mysql datadir = /usr /local /mysql /database tmpdir = /usr /local /mysql /data /tmp character_set_server = utf8mb4 collation_server = utf8mb4_bin user = mysql log-error =/usr /local /mysql /data /error .log secure-file-priv = null log_bin_trust_function_creators = 1 performance_schema = 0 explicit_defaults_for_timestamp event_scheduler skip-external-locking skip-name-resolve skip-slave-start slave_net_timeout = 30 local-infile = 0 back_log = 1024 sql_mode = NO_ENGINE_SUBSTITUTION ,NO_AUTO_CREATE_USER key_buffer_size = 32M max_allowed_packet = 512M thread_stack = 256K sort_buffer_size = 16M read_buffer_size = 16M join_buffer_size = 16M read_rnd_buffer_size = 32M net_buffer_length = 16K myisam_sort_buffer_size = 128M bulk_insert_buffer_size = 32M thread_cache_size = 384 query_cache_size = 0 query_cache_type = 0 tmp_table_size = 1024M max_heap_table_size = 512M open_files_limit = 10240 max_connections = 2000 max-user-connections = 0 max_connect_errors = 100000 table_open_cache = 5120 interactive_timeout = 86400 wait_timeout = 86400 binlog_cache_size = 16M slow_query_log = true slow_query_log_file = /usr /local /mysql /data /slow_query_log .log long_query_time = 1 log-slow-admin-statements log-queries-not-using-indexes binlog_format = ROW log-bin = /usr /local /mysql /data /binlog /mysql-bin log-bin-index = /usr /local /mysql /data /binlog /mysql-bin .index relay-log = /usr /local /mysql /data /relay /mysql-relay-bin relay-log-index = /usr /local /mysql /data /relay /mysql-relay-bin .index server-id = 1 log_slave_updates = 1 expire-logs-days = 15 max_binlog_size = 128M auto_increment_offset = 1 auto_increment_increment = 2 relay_log_info_repository = TABLE master_info_repository = TABLE relay_log_recovery = on innodb_buffer_pool_size = 128M innodb_data_file_path = ibdata1:10M: autoextend innodb_flush_log_at_trx_commit = 2 innodb_read_io_threads = 8 innodb_write_io_threads = 8 innodb_open_files = 1000 innodb_purge_threads = 1 innodb_log_buffer_size = 8M innodb_log_file_size = 128M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 75 innodb_buffer_pool_instances = 4 innodb_io_capacity = 500 innodb_file_per_table = 1 innodb_change_buffering = inserts innodb_adaptive_flushing = 1 transaction-isolation = READ-COMMITTED innodb_flush_method = fsync [mysqldump ] quick max_allowed_packet = 512M net_buffer_length = 16384 [mysql ] auto-rehash [isamchk ] key_buffer = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M [myisamchk ] key_buffer = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M [mysqlhotcopy ] interactive-timeout --------------------- 作者:Little__Sheep 来源:CSDN 原文:https ://blog .csdn .net /weixin_41657730 /article /details /89763001 版权声明:本文为博主原创文章,转载请附上博文链接!